2017-05-05 27 views
0

我有一個RecyclerView,它產生一個包含另一個RecyclerView的CardView。需要處理RecyclerView上的點擊事件的建議

父RecyclerView適配器設置子RecyclerView適配器爲了呈現下面的圖像。 (紅色文本中添加,以顯示其位置): enter image description here

我的問題是如何獲取的東西被點擊,如母公司0和兒童0與第一個孩子RecyclerView是表示第一父RecyclerView位置點擊?

回答

0
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()); 
    } 
+0

謝謝您的回答。你將如何獲得父級RecyclerView adapater職位?我已將相同的概念應用於父ViewHolder,並且它不會被調用。 – John

+0

你設置了點擊監聽器嗎?如果是,那麼你的問題不清楚。 – Malika

0

創建自定義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 
      } 
     }); 
    } 
})); 
+0

謝謝你的回答。我已經跟隨它,並有一個問題,我如何訪問item_card裏面的RecyclerView的位置編號? – John

相關問題