查找在RecyclerView中点击(单击)的视图

时间:2015-11-24 16:32:26

标签: android android-recyclerview

我有一个"细胞"在我的列表中有图片,文字和复选框。这是我的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

我如何知道用户点击(点击)的确切视图?

1 个答案:

答案 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;
}