我有一个"细胞"在我的列表中有图片,文字和复选框。这是我的xml
fragment_people_list_item.xml
:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android">
// ... more elements
<CheckBox />
</RelativeLayout>
我想区分用户是否点击复选框或其他视图。我RecyclerView.OnItemTouchListener
的相关部分:
@Override
public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent e) {
View childView = recyclerView.findChildViewUnder(e.getX(), e.getY());
}
它说findChildViewUnder
在给定点下找到最顶层的视图,它始终是我的RelativeLayout
!
我如何知道用户点击(点击)的确切视图?
答案 0 :(得分:0)
要区分checkBox上的点击次数与列表项其余部分的点击次数,您应该使用自定义适配器作为列表并覆盖getView。在getView方法中,您可以分别为checkBox和项目设置OnClickListener。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_item, parent, false);
}
CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.checkbox);
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("@@@", "checkbox clicked");
}
});
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("@@@", "item clicked");
}
});
return convertView;
}