diff --git a/.idea/misc.xml b/.idea/misc.xml
index 9442b9c..3c9b2ba 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,6 +3,45 @@
+
+
+
+
+
+
diff --git a/app/src/main/java/com/example/recyclerview/MainActivity.java b/app/src/main/java/com/example/recyclerview/MainActivity.java
index ae9bb68..ab4c097 100644
--- a/app/src/main/java/com/example/recyclerview/MainActivity.java
+++ b/app/src/main/java/com/example/recyclerview/MainActivity.java
@@ -6,11 +6,13 @@ import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.os.Handler;
+import android.view.View;
+import android.widget.AdapterView;
import java.util.ArrayList;
import java.util.Date;
-public class MainActivity extends AppCompatActivity implements Runnable {
+public class MainActivity extends AppCompatActivity implements Runnable, AdapterView.OnItemClickListener {
ArrayList mData;
Handler mHandler;
@@ -26,6 +28,17 @@ public class MainActivity extends AppCompatActivity implements Runnable {
myAdapter = new MyAdapter(mData);
RecyclerView mRecyclerView = findViewById(R.id.recyclerView);
+ mRecyclerView.addOnItemTouchListener(
+ new RecyclerItemClickListener(getApplicationContext(), mRecyclerView ,new RecyclerItemClickListener.OnItemClickListener() {
+ @Override public void onItemClick(View view, int position) {
+ System.out.println("clicked " + mData.get(position).sender);
+ }
+
+ @Override public void onLongItemClick(View view, int position) {
+ // do whatever
+ }
+ })
+ );
LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLinearLayoutManager);
mRecyclerView.setAdapter(myAdapter);
@@ -49,4 +62,9 @@ public class MainActivity extends AppCompatActivity implements Runnable {
myAdapter.notifyDataSetChanged();
mHandler.postDelayed(this, 1000);
}
+
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ System.out.println("gecklickt ".concat(mData.get(position).sender));
+ }
}
diff --git a/app/src/main/java/com/example/recyclerview/RecyclerItemClickListener.java b/app/src/main/java/com/example/recyclerview/RecyclerItemClickListener.java
new file mode 100644
index 0000000..a2da499
--- /dev/null
+++ b/app/src/main/java/com/example/recyclerview/RecyclerItemClickListener.java
@@ -0,0 +1,54 @@
+package com.example.recyclerview;
+
+import android.content.Context;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+
+public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
+ private OnItemClickListener mListener;
+
+ public interface OnItemClickListener {
+ void onItemClick(View view, int position);
+
+ void onLongItemClick(View view, int position);
+ }
+
+ private GestureDetector mGestureDetector;
+
+ RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {
+ mListener = listener;
+ mGestureDetector = 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 && mListener != null) {
+ mListener.onLongItemClick(child, recyclerView.getChildAdapterPosition(child));
+ }
+ }
+ });
+ }
+
+ @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
+ View childView = view.findChildViewUnder(e.getX(), e.getY());
+ if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
+ mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
+ return true;
+ }
+ return false;
+ }
+
+ @Override public void onTouchEvent(@NonNull RecyclerView view, @NonNull MotionEvent motionEvent) { }
+
+ @Override
+ public void onRequestDisallowInterceptTouchEvent (boolean disallowIntercept){}
+}
\ No newline at end of file