我有一個RecyclerView,它產生一個包含另一個RecyclerView的CardView。需要處理RecyclerView上的點擊事件的建議
父RecyclerView適配器設置子RecyclerView適配器爲了呈現下面的圖像。 (紅色文本中添加,以顯示其位置):
我的問題是如何獲取的東西被點擊,如母公司0和兒童0與第一個孩子RecyclerView是表示第一父RecyclerView位置點擊?
我有一個RecyclerView,它產生一個包含另一個RecyclerView的CardView。需要處理RecyclerView上的點擊事件的建議
父RecyclerView適配器設置子RecyclerView適配器爲了呈現下面的圖像。 (紅色文本中添加,以顯示其位置):
我的問題是如何獲取的東西被點擊,如母公司0和兒童0與第一個孩子RecyclerView是表示第一父RecyclerView位置點擊?
ViewHolder item is your list item so implement on click listener on it
and you can get clicked position on item click as:
class ViewHolder extends RecyclerView.ViewHolder implements
View.OnClickListener {
ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
System.out.println("clicked position "+getAdapterPosition());
}
創建自定義RecyclerView監聽
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
private OnItemClickListener mListener;
public interface OnItemClickListener {
public void onItemClick(View view, int position);
}
GestureDetector mGestureDetector;
public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
mListener = listener;
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
});
}
@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 false;
}
@Override
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
然後在活動執行上面的類
recyclerview.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view1, int position) {
CardView item_card = (CardView) view1.findViewById(R.id.item_card);
item_card.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view2) {
//you code here
}
});
}
}));
謝謝你的回答。我已經跟隨它,並有一個問題,我如何訪問item_card裏面的RecyclerView的位置編號? – John
謝謝您的回答。你將如何獲得父級RecyclerView adapater職位?我已將相同的概念應用於父ViewHolder,並且它不會被調用。 – John
你設置了點擊監聽器嗎?如果是,那麼你的問題不清楚。 – Malika