最近在实现图片选择的功能,最初界面由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的重用机制,会导致选中状态混乱,显示状态与逻辑状态不符。