2017-05-05 28 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

相关问题