From 5ef12c7d833d741dfac08283d3a55b9119a94248 Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Fri, 2 Sep 2022 11:14:32 -0700 Subject: [PATCH] recycler listsner ready --- app/src/main/AndroidManifest.xml | 3 + .../asgardius/page/s3manager/Adapter.java | 7 +-- .../page/s3manager/BucketSelect.java | 30 +++++++++- .../page/s3manager/ObjectSelect.java | 14 +++++ .../page/s3manager/RecyclerTouchListener.java | 57 +++++++++++++++++++ .../res/layout/activity_object_select.xml | 9 +++ 6 files changed, 111 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/asgardius/page/s3manager/ObjectSelect.java create mode 100644 app/src/main/java/asgardius/page/s3manager/RecyclerTouchListener.java create mode 100644 app/src/main/res/layout/activity_object_select.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b2fde79..2bdd423 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,6 +15,9 @@ android:supportsRtl="true" android:theme="@style/Theme.AsgardiusS3Manager" tools:targetApi="31"> + diff --git a/app/src/main/java/asgardius/page/s3manager/Adapter.java b/app/src/main/java/asgardius/page/s3manager/Adapter.java index 6ac1f2a..4d0e91a 100644 --- a/app/src/main/java/asgardius/page/s3manager/Adapter.java +++ b/app/src/main/java/asgardius/page/s3manager/Adapter.java @@ -10,6 +10,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; +import asgardius.page.s3manager.BucketSelect; public class Adapter extends RecyclerView.Adapter{ ArrayList Img, Name; @@ -35,12 +36,6 @@ public class Adapter extends RecyclerView.Adapter{ int res = (int) Img.get(position); holder.images.setImageResource(res); holder.text.setText((CharSequence) Name.get(position)); - holder.text.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - System.out.println("Click on "+Integer.toString(position)); - } - }); } @Override public int getItemCount() { diff --git a/app/src/main/java/asgardius/page/s3manager/BucketSelect.java b/app/src/main/java/asgardius/page/s3manager/BucketSelect.java index 2778a7a..47c903a 100644 --- a/app/src/main/java/asgardius/page/s3manager/BucketSelect.java +++ b/app/src/main/java/asgardius/page/s3manager/BucketSelect.java @@ -6,8 +6,10 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; +import android.view.View; import android.widget.Toast; import com.amazonaws.auth.AWSCredentials; @@ -27,13 +29,14 @@ public class BucketSelect extends AppCompatActivity { ArrayList Name; ArrayList Img; RecyclerView recyclerView; + String username, password, endpoint; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - String endpoint = getIntent().getStringExtra("endpoint"); - String username = getIntent().getStringExtra("username"); - String password = getIntent().getStringExtra("password"); + endpoint = getIntent().getStringExtra("endpoint"); + username = getIntent().getStringExtra("username"); + password = getIntent().getStringExtra("password"); setContentView(R.layout.activity_bucket_select); Region region = Region.getRegion(US_EAST_1); S3ClientOptions s3ClientOptions = S3ClientOptions.builder().build(); @@ -100,5 +103,26 @@ public class BucketSelect extends AppCompatActivity { listbucket.start(); //listbucket list = new listbucket(); //list.execute("test"); + recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), recyclerView, new RecyclerTouchListener.ClickListener() { + @Override + public void onClick(View view, int position) { + System.out.println("Click on "+Integer.toString(position)); + } + + @Override + public void onLongClick(View view, int position) { + System.out.println("Long click on "+Integer.toString(position)); + } + })); + } + + private void explorer() { + + Intent intent = new Intent(this, BucketSelect.class); + intent.putExtra("endpoint", endpoint); + intent.putExtra("username", username); + intent.putExtra("password", password); + startActivity(intent); + } } \ No newline at end of file diff --git a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java new file mode 100644 index 0000000..9a7c451 --- /dev/null +++ b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java @@ -0,0 +1,14 @@ +package asgardius.page.s3manager; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; + +public class ObjectSelect extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_object_select); + } +} \ No newline at end of file diff --git a/app/src/main/java/asgardius/page/s3manager/RecyclerTouchListener.java b/app/src/main/java/asgardius/page/s3manager/RecyclerTouchListener.java new file mode 100644 index 0000000..1b566f5 --- /dev/null +++ b/app/src/main/java/asgardius/page/s3manager/RecyclerTouchListener.java @@ -0,0 +1,57 @@ +package asgardius.page.s3manager; + +import android.content.Context; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; + +import androidx.recyclerview.widget.RecyclerView; + +public class RecyclerTouchListener implements RecyclerView.OnItemTouchListener { + + private GestureDetector gestureDetector; + private ClickListener clickListener; + + public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) { + this.clickListener = clickListener; + gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { + @Override + public boolean onSingleTapUp(MotionEvent e) { + return true; + } + + @Override + public void onLongPress(MotionEvent e) { + View child = recyclerView.findChildViewUnder(e.getX(), e.getY()); + if (child != null && clickListener != null) { + clickListener.onLongClick(child, recyclerView.getChildPosition(child)); + } + } + }); + } + + @Override + public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { + + View child = rv.findChildViewUnder(e.getX(), e.getY()); + if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) { + clickListener.onClick(child, rv.getChildPosition(child)); + } + return false; + } + + @Override + public void onTouchEvent(RecyclerView rv, MotionEvent e) { + } + + @Override + public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { + + } + + public interface ClickListener { + void onClick(View view, int position); + + void onLongClick(View view, int position); + } +} diff --git a/app/src/main/res/layout/activity_object_select.xml b/app/src/main/res/layout/activity_object_select.xml new file mode 100644 index 0000000..31e37ad --- /dev/null +++ b/app/src/main/res/layout/activity_object_select.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file