用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中却没有泛型这个说法,那么如 ...
随机推荐
- javascript平时小例子④(setInterval使用2)
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>& ...
- MySQL数据库相关命令
1.命令:show create table 表名 功能:获取建表语句 2.命令:desc 表名 功能:展示表字段及其类型
- Bootstrap 固定定位(Affix)
来自:慕课网 http://www.imooc.com/code/5396 Affix 效果常见的有以下三种: ☑ 顶部固定 ☑ 侧边栏固定 ☑ 底部固定 固定定位--声明式触发固定定位 Affix ...
- javascript 原型链
浅谈JS原型链 原型链 ECMAScript中描述了原型链的概念.我们知道ECMAScript并不像C++,Java那样使用类,但是对象仍然可以通过多种方式创建,其中就有构造函数方式.每个构造函数都有 ...
- 建造者模式(Builder)
GOF:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 类图:
- Android课程---用进度条改变图片透明度
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- A Great Alchemist
Time limit : 2sec / Stack limit : 256MB / Memory limit : 256MB ProblemCarol is a great alchemist. In ...
- 示例-创建表格&使用表格对象
@charset "utf-8";/* CSS Document */table{ border:#249bdb 1px solid; width:500px; border-co ...
- ThinkPHP 3.2.3 数据缓存与静态缓存
ThinkPHP 3.2.3 中手册中数据缓存的地址是:http://www.kancloud.cn/manual/thinkphp/1835 静态缓存的地址是:http://www.kancloud ...
- Google Chrome浏览器中如何使用命令
Google Chrome浏览器中如何使用命令 | 浏览:2974 | 更新:2014-02-23 23:12 | 标签:chrome 1 2 3 分步阅读 Google Chrome浏览器有很多的特 ...