用hashMAP或ArrayList解决recylerView中checkbox的选择错乱问题。
//这个监听一定要放在checkbox初始化的方法之前,否则无效。是因为滑动的时侯会重新给checkbox赋值造成的。
holder.cbFileSel.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.e("isChecked",isChecked+"---"+position);
checkedItems.put(position,isChecked);
}
}); holder.cbFileSel.setChecked(checkedItems.get(position));
集合初始化
private HashMap<Integer,Boolean> checkedItems;
public FileListAdapter(Context context, ArrayList<Files> datas, int layoutID) {
super(context, datas, layoutID);
checkedItems=new HashMap<>();
for(int i=0;i<datas.size();i++){
checkedItems.put(i,false);
}
}
方法二:利用arraylist解决
private List<Integer> checkPositionlist;
private ArrayList<Files> checkedFiles;
public PictureSelectorAdapter_1(ArrayList<Files> files, ArrayList<Files> checkedFiles) {
this.files = files;
checkPositionlist = new ArrayList<>();
this.checkedFiles = checkedFiles;
} /**
* 解决checkbox的多选冲突
* @param holder
* @param position
* @param currentFile
*/
private void checkboxMulConflict(final MyViewHolder holder, final int position, final Files currentFile) {
holder.checkbox.setTag(new Integer(position));//防止复用导致的checkbox多选的问题。
//防止复选的辅助list
if (checkPositionlist != null) {
holder.checkbox.setChecked((checkPositionlist.contains(new Integer(position)) ? true : false));
} else {
holder.checkbox.setChecked(false);
} holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
if (!checkPositionlist.contains(holder.checkbox.getTag())) {
checkPositionlist.add(new Integer(position));
checkedFiles.add(currentFile);
}
} else {
if (checkPositionlist.contains(holder.checkbox.getTag())) {
checkPositionlist.remove(holder.checkbox.getTag());
checkedFiles.remove(currentFile);
}
}
}
});
}
用hashMAP或ArrayList解决recylerView中checkbox的选择错乱问题。的更多相关文章
- Android 解决listview中checkBox错位选择
假如ListView,分成2页(或者设置数据可以纵向拉,可隐藏),每页3条数据,每个Listview的Item 里面有个checkBox,现在,当我选择第一页的前两天数据,翻到第二页,竟然第二页后两条 ...
- jquery中checkbox全选失效的解决方法
这篇文章主要介绍了jquery中checkbox全选失效的解决方法,需要的朋友可以参考下 如果你使用jQuery 1.6 ,代码if ( $(elem).attr(“checked”) ),将 ...
- OAF_开发系列17_实现OAF数组应用Vector / Hashmap / Hashtable / Arraylist(案例)
20150506 Created By BaoXinjian
- NullableKey:解决Dictionary中键不能为null的问题 zt
2012-12-29 02:26 by 老赵, 1745 visits 众所周知,.NET中Dictionary的键不能为null,否则会抛出NullReferenceException,这在某些时候 ...
- 【AngularJS】解决ng-if中的ng-model值无效的问题(转)
from:http://blog.csdn.net/u013451157/article/details/60866210 与其他指令一样,ng-if指令也会创建一个子级作用域,因此,如果在ng-if ...
- JAVA遍历HashMap和ArrayList
List Map 基础信息 HashMap 最近写程序经常需要遍历集合,所以总结一下内容: 一.简单实现 Map map = new HashMap(); for(Object o : map.key ...
- HashMap,Hashset,ArrayList以及LinkedList集合的区别,以及各自的用法
基础内容 容器就是一种装其他各种对象的器皿.java.util包 容器:Set, List, Map ,数组.只有这四种容器. Collection(集合) 一个一个往里装,Map 一对一对往里装. ...
- 解决QML开发中ComboBox中一个已选择项没有清除的问题
解决QML开发中ComboBox中一个已选择项没有清除的问题 近期使用QML开发一个项目.须要使用ComboBox进行显示.当进行一个操作时,须要向ComboBox加入一个元素,当进行另外一个操作时. ...
- 如何用Jpype创建HashMap和ArrayList
近期在Python中使用java语言的时候有涉及到如何创建HashMap和ArrayList等容器,最开始的疑惑是,java里面的容器是有泛型做类型检测的,而在python中却没有泛型这个说法,那么如 ...
随机推荐
- 安装redis和php的redis扩展
一.安装Redis 在服务器上下载好最新的redis解压包后,解压 #tar -zxvf redis-3.2.0-tar-gz #cd redis-3.2.0-tar-gz #make (redis- ...
- make:cc 命令未找到的解决方法
安装redis时遇到的问题 make:cc 命令未找到的解决方法 没安装gcc,然后安装 yum install gcc yum install gcc-c++
- powerdesigner的基本使用转载
http://www.blogjava.net/wangdetian168/archive/2011/04/07/347847.html
- SSH集成开发框架开发步骤
1. 环境搭建 a)添加Struts框架的支持 b)添加spring框架的支持(选中5个类库,且Copy类库到WEB-INF/lib目录下) c)在Eclipse 中,DataBase Explor ...
- iPhone6手機產品提交了進網申請
近期,海外投資蘋果公司為iPhone6手機產品提交了進網申請,經電信設備進網檢測機構測試和我部審查,相關產品滿足進網管理要求.根據<電信條例>有關規定,我部依法定程式在法定時限內為蘋果公司 ...
- BizTalk开发系列(三十一)配置和使用HTTP适配器
BizTalk的主机分别进程内主机和独立主机.但由于一直使用的是进程内主机,对于独立主机的认识比较模糊,前不久在做一个BizTalk的项目的时 候,个别系统使用HTTP的方式发布Txt之类的文本的.刚 ...
- Harris角点检测算法优化
Harris角点检测算法优化 一.综述 用 Harris 算法进行检测,有三点不足:(1 )该算法不具有尺度不变性:(2 )该算法提取的角点是像素级的:(3 )该算法检测时间不是很令人满意. 基于以上 ...
- H5页面性能优化
对于一个产品,性能在用户体验中是必不可缺的一环.性能优化是个长远的事情,联想到导航项目,列出以下性能优化的方案: 一. 基本的代码层面优化: 1:合理使用css 1)正确使用Display属性 Dis ...
- Maven-007-Nexus 用户添加,用户角色分配,用户修改密码,管理员重置用户密码
配置好 maven nexus 私服后,默认的用户可通过查看[Users]查看当前私服中所存在的用户,如下图所示:
- centos 修改网卡名为eth0
centos7和centos6的命名规则不同,centos6网卡名由udev控制 网卡名以eth开头然后第一块网卡叫eth0第二块网卡叫eth1,然后centos7的网卡命名规则截然不同 centos ...