RecyclerView与ListView点击事件的区别
2015-12-27 20:37
288 查看
最近在实现图片选择的功能,最初界面由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的重用机制,会导致选中状态混乱,显示状态与逻辑状态不符。
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的重用机制,会导致选中状态混乱,显示状态与逻辑状态不符。
相关文章推荐
- 《ActiveMQ In Action》Chapter 2 Understanding message-oriented middleware and JMS
- Palindrome Nmber
- Oracle中常用的sql操作
- 23种设计模式(10)_结构型_外观模式(Facade Pattern)
- ORACLE基本操作
- [二]JFreeChart实践一
- 031 局部和全局变量
- ajax中的get和post说明
- matlab 矩形窗汉明窗幅频特性对比
- DataTable转List
- linux命令vi的使用
- android-sdks/build-tools/17.0.0/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
- C#中三层架构UI、BLL、DAL、Model实际操作
- MySQL服务健康检查脚本
- 二十二:微信公众帐号开发-符号表情的发送下
- 正则表达式
- 创建线程方式-NSOperation
- 不使用data-ng-app指令的表达式
- Linux 网络设备驱动程序设计(4)
- SQL约束