RecyclerView与ListView点击事件的区别

最近在实现图片选择的功能,最初界面由ListView容器来加载,item为ImageView+CheckBox,CheckBox位于ImageView的右上角,实现的功能为点击item时,会改变CheckBox的选中状态。如果用ListView来实现的话,还是很方便的,即实现listview的onItemClicklistener事件,在其方法

public void onItemClick(AdapterView parent, View view,  int position, long id) {}
中获取CheckBox,

CheckBox m = (CheckBox) view .findViewById(R.id.id_add_item_checkbox);

然后为设置其选中状态。

但是如果用RecyclerView来实现时,不仅需要自己实现其点击事件,而且在设置点击事件时,不能设置在ImageView控件上,而应该设置在item的根控件上,如

linearLayout = findViewById(R.id.linearLayout);

然后在自定义的click事件中找到子Item中的CheckBox:

checkBox = linearLayout.findViewById(R.id.checkBox);

这样才可以正确的对应到每一个子项的CheckBox。

需要注意的是如果不为CheckBox设置一个HashMap来存储其选中状态的话,由于ListView的重用机制,会导致选中状态混乱,显示状态与逻辑状态不符。

你可能感兴趣的:(Android)