Skip to content

Commit 7ea40c5

Browse files
committed
Fix click support. Showing 1 of many options
1 parent 1f75c11 commit 7ea40c5

File tree

3 files changed

+48
-32
lines changed

3 files changed

+48
-32
lines changed

demo/src/main/java/com/daimajia/swipedemo/RecyclerViewExample.java

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.daimajia.swipe.util.Attributes;
1919
import com.daimajia.swipedemo.adapter.RecyclerViewAdapter;
2020
import com.daimajia.swipedemo.adapter.RecyclerViewAdvancedAdapter;
21+
import com.daimajia.swipedemo.adapter.util.RecyclerItemClickListener;
2122

2223
import org.lucasr.twowayview.ItemClickSupport;
2324
import org.lucasr.twowayview.TwoWayLayoutManager;
@@ -63,23 +64,19 @@ protected void onCreate(Bundle savedInstanceState) {
6364

6465
mDataSet = new ArrayList<String>(Arrays.asList(adapterData));
6566
mAdapter = new RecyclerViewAdapter(this, mDataSet);
67+
6668
((RecyclerViewAdapter) mAdapter).setMode(Attributes.Mode.Single);
6769
recyclerView.setAdapter(mAdapter);
6870

6971
/* Listeners */
70-
ItemClickSupport itemClick = ItemClickSupport.addTo(recyclerView);
71-
itemClick.setOnItemClickListener(onItemClickListener);
72-
recyclerView.setOnTouchListener(new View.OnTouchListener() {
72+
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
7373
@Override
74-
public boolean onTouch(View v, MotionEvent event) {
75-
Log.e("ListView", "OnTouch");
76-
return false;
74+
public void onItemClick(View view, int position) {
75+
Toast.makeText(mContext, "Clicked:" + position, Toast.LENGTH_SHORT).show();
7776
}
78-
});
77+
}));
7978
recyclerView.setOnScrollListener(onScrollListener);
8079

81-
// TODO: Item Long Click is firing for every touch.
82-
// itemClick.setOnItemLongClickListener(onItemLongClickListener);
8380

8481
// TODO: Item Selection Support for RecyclerView
8582
// recyclerView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@@ -96,27 +93,6 @@ public boolean onTouch(View v, MotionEvent event) {
9693

9794
}
9895

99-
/**
100-
* Substitute for our onItemClick listener for RecyclerView
101-
*/
102-
ItemClickSupport.OnItemClickListener onItemClickListener = new ItemClickSupport.OnItemClickListener() {
103-
@Override
104-
public void onItemClick(RecyclerView parent, View child, int position, long id) {
105-
Toast.makeText(mContext, "Clicked:" + position, Toast.LENGTH_SHORT).show();
106-
}
107-
};
108-
109-
/**
110-
* Substitute for our onItemLongClick listener for RecyclerView
111-
*/
112-
ItemClickSupport.OnItemLongClickListener onItemLongClickListener = new ItemClickSupport.OnItemLongClickListener() {
113-
@Override
114-
public boolean onItemLongClick(RecyclerView recyclerView, View view, int position, long id) {
115-
Toast.makeText(mContext, "OnItemLongClickListener:" + position, Toast.LENGTH_SHORT).show();
116-
return false;
117-
}
118-
};
119-
12096
/**
12197
* Substitute for our onScrollListener for RecyclerView
12298
*/

demo/src/main/java/com/daimajia/swipedemo/adapter/RecyclerViewAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
public class RecyclerViewAdapter extends RecyclerSwipeAdapter {
2121

22-
public static class SimpleViewHolder extends ViewHolder {
22+
public static class SimpleViewHolder extends ViewHolder{
2323
SwipeLayout swipeLayout;
2424
TextView textViewPos;
2525
TextView textViewData;
@@ -50,7 +50,7 @@ public ViewHolder createRecyclerViewHolder(ViewGroup parent, int viewType) {
5050
}
5151

5252
@Override
53-
public void bindRecyclerViewHolder(ViewHolder viewHolder, int position) {
53+
public void bindRecyclerViewHolder(ViewHolder viewHolder, final int position) {
5454
SimpleViewHolder simpleViewHolder = (SimpleViewHolder) viewHolder;
5555
String item = mDataset.get(position);
5656
simpleViewHolder.swipeLayout.setShowMode(SwipeLayout.ShowMode.LayDown);
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.daimajia.swipedemo.adapter.util;
2+
3+
import android.content.Context;
4+
import android.support.v7.widget.RecyclerView;
5+
import android.view.GestureDetector;
6+
import android.view.MotionEvent;
7+
import android.view.View;
8+
9+
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
10+
private OnItemClickListener mListener;
11+
12+
public interface OnItemClickListener {
13+
public void onItemClick(View view, int position);
14+
}
15+
16+
GestureDetector mGestureDetector;
17+
18+
public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
19+
mListener = listener;
20+
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
21+
@Override
22+
public boolean onSingleTapUp(MotionEvent e) {
23+
return true;
24+
}
25+
});
26+
}
27+
28+
@Override
29+
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
30+
View childView = view.findChildViewUnder(e.getX(), e.getY());
31+
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
32+
mListener.onItemClick(childView, view.getChildPosition(childView));
33+
}
34+
return false;
35+
}
36+
37+
@Override
38+
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
39+
}
40+
}

0 commit comments

Comments
 (0)