用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中却没有泛型这个说法,那么如 ...
随机推荐
- Android自定义UI模板
第一步:自定义xml属性 新建一个android项目,在values文件夹中新建一个atts.xml的文件,在这个xml文件中声明我们一会在使用自定义控件时候需要指明的属性.atts.xml < ...
- css3 半个字符美化方法
<html lang="zh-CN"> <head> <title></title> <meta charset=" ...
- div半透明背景,文字不透明
background: rgba(255, 255, 255, 0.8) !important; /* IE无效,FF有效 */ background: #fff; filter: alpha(opa ...
- linux笔记十----虚拟机网络配置
首先,参考了博客http://blog.csdn.net/qianggezhishen/article/details/45841723,可以学会怎样确定界面类型
- php获取真实IP地址
function user_realip() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif (g ...
- 2145334赵文豪《Java程序设计》第2周学习总结
2145334赵文豪<Java程序设计>第2周学习总结 教材学习内容总结 第二周的学习结束了,又是充实的一周,在这周的java学习过程中,我们主要学习了java的基础语法.其中包括类型变量 ...
- 增强for循环
import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Li ...
- ThinkPHP 3.2.3 中设置和使用 Session
Session 的配置 可以在 config.php(可以是应用公用的 config.php 或模块的 config.php)中对 Session 进行配置,例如: config.php <?p ...
- faster with MyISAM tables than with InnoDB or NDB tables
http://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations.html Performance considerations. So ...
- RESTful简单介绍(入门)
1.1 什么是RESTful http://www.ruanyifeng.com/blog/2011/09/restful.html RESTful架构,就是目前最流行的一种互联网软件架构. ...