recyclers子视图包含两个可点击的对象,一个是一组TextViews和ImageView,另一个是CheckBox(请参阅Android Recyclerview Multiple onclick items)我想看看是否在孩子上点击了复选框 . 如果是这样,那么我改变了CheckBox的状态 . 另外,我发起了另一项活动(结果) . 上面的链接显示了在视图持有者中处理点击次数 . 我想在我设置RecyclerView的其他活动中处理点击 .
//the view needs a listener
final GestureDetector mGestureDetector = new GestureDetector(getActivity(), new GestureDetector.SimpleOnGestureListener() {
@Override public boolean onSingleTapUp(MotionEvent e) {
return true;
}
});
mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
View child = recyclerView.findChildViewUnder(motionEvent.getX(),motionEvent.getY());
if(child!=null && mGestureDetector.onTouchEvent(motionEvent)){
if(child.getId() == R.id.chk_box_pin){
//checking, this didn't work
}
else {
TextView idView = (TextView) child.findViewById(R.id.note_id_txt_vw);
if (DEBUG) Toast.makeText(getActivity(),
"ID is " + idView.getText().toString(), Toast.LENGTH_SHORT).show();
startEditNoteActivity(ActivityContract.ACTIVITY_EDIT, idView.getText().toString());
}
return true;
}
return false;
}
@Override
public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
}
});
有没有办法可以处理活动中孩子内部多个项目的点击(而不是ViewHolder)?
2 回答
不幸的是,您必须实现自己的监听器才能与您的活动进行通信 .
创建一个接口,在您的活动上实现它,在您的适配器上传递您的接口实例(在您的接口上转换上下文)并使用自定义参数调用您的自定义方法 .
像这样你应该有权访问
ViewHolder
(不要忘记使用适配器最佳实践实现) .希望它有所帮助!
最好 .
检查一下:Why doesn't RecyclerView have onItemClickListener()? And how RecyclerView is different from Listview?
您始终可以创建一个将事件传递给活动的界面 . 所以举个例子
然后在你的适配器
然后你这样调用它
那将是它:)希望它有所帮助,祝你好运