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的重用机制,会导致选中状态混乱,显示状态与逻辑状态不符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值