【转】Android:ListView常见错位之CheckBox错位
原文网址:http://blog.csdn.net/lemon_tree12138/article/details/39337867
ListView在什么样的情况下会出现错位?错位的原因是什么?怎么解决?下面的内容会对这些问题做一个讲解。
1.ListView在什么样的情况下会出现错位?
其实错位是当我们的ListView的每个单项(item)从屏幕中移入或是移出,我们的系统会对这个item的状态进行重新定义——是否被选中等等。一般只是显示的情况下,我们的ListView很少出现错位,因为状态没有改变。
我们现在就是拿一个CheckBox组件来说明,因为CheckBox是一个比较基础的换件,而且CheckBox的状态改变比较明显。
例如下面这种情况:
初始界面中选中第0个和第1个:
当我们对屏幕进行滑动再回来的时候,我们会看到,第0个的CheckBox的勾不见了。第9个的CheckBox出现了勾,这是个就是错位。
也就是说我们在重新加载由屏幕之外的item移到屏幕之内时,CheckBox的状态发生改变。
如是,我们想是不是有一种方法来记录这种变化,且变化只是在监听器监听到有需要改变的状态发生时,才会变化。
这里我们用一个ArrayList<Boolean>的数组来记录。
关键代码如下:
- public View getView(final int position, View convertView, ViewGroup parent) {
- ViewHolder viewHolder = null;
- if (recordMap.get(position) == null) {
- convertView = mInflater.inflate(R.layout.listview_item, null);
- viewHolder = new ViewHolder(convertView);
- Log.i(TAG, "1: " + position);
- final int finalP = position;
- recordMap.put(position, convertView);
- viewHolder.checkBox.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- CheckBox checkBox = (CheckBox)v;
- isChecked.set(finalP, checkBox.isChecked());
- }
- });
- convertView.setTag(viewHolder);
- } else {
- Log.i(TAG, "2: " + position);
- convertView = recordMap.get(position);
- viewHolder = (ViewHolder) convertView.getTag();
- }
- viewHolder.button.setText("click " + position);
- viewHolder.checkBox.setChecked(isChecked.get(position));
- return convertView;
- }
----------------------------------------------- 程序源码下载
转载于:https://www.cnblogs.com/wi100sh/p/4491882.html
【转】Android:ListView常见错位之CheckBox错位相关推荐
- Android:ListView常见错位之CheckBox错位
ListView在什么样的情况下会出现错位?错位的原因是什么?怎么解决?下面的内容会对这些问题做一个讲解. 1.ListView在什么样的情况下会出现错位? 其实错位是当我们的ListView的每个单 ...
- android ListView中CheckBox错位的解决
貌似已经非常晚了,可是还是想记下笔记,想让今天完满. 在ListView中加了checkBox,但是发现点击改变其选中状态的时候,发现其位置错乱.状态改变的并非你选中的,百思不得其解.后面通过上网查资 ...
- android ListView包含Checkbox滑动时状态改变
题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎 ...
- [置顶]android ListView包含Checkbox滑动时状态改变
题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎 ...
- android listview 增加单选 复选,ListView里面加入CheckBox如何实现单选?
这个的问题也就是点击的时候 checkbox的选项会乱的问题 这个问题的解决很好解决,一个map或者实体类中加个字段就可以搞定.如果想彻底掌握也不麻烦,我这个人不太喜欢贴代码,谈谈原理仅作参考 了解l ...
- Android ListView 使用checkbox 实现 单选、多选操作
项目开发中经常会遇到 ListView +CheckBox 结合使用的场景,比如 手机应用程序管理程序 中的卸载功能,需要让用户去 勾选 要卸载的 应用程序,点击 即可进行批量卸载.等等这样的例子很多 ...
- Android ListView中CheckBox选中状态失效的最佳解决方案
Android ListView中CheckBox选中状态失效: 在ListView中某一项滑到显示区外部的时候,重新划回来时其中的CheckBox的选中状态会重置,本文提出了一种解决方案,操作起来快 ...
- Android ListView异步加载图片乱序问题,原因分析及解决方案
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...
- android item 点击 获取position,Android ListView 子控件onClick正确获取position的方法
在实际开发中,我们有时候不仅需要响应ListView的onItemClick,还需要响应其子控件的点击事件,这个时候我们就会 发现,由于复用等原因,如果直接在子控件的onClick事件中调用getVi ...
最新文章
- mysql+提升更新语句效率_MySQL加快批量更新 UPDATE优化
- linux内核常用函数或宏
- 学计算机是什么猿,卡内基梅隆大学生物计算机专业 让你快快乐乐的当一个程序猿...
- angularjs 弹出框 $modal传值
- 计算机数学基础模拟试题,计算机数学基础(A)模拟试题.doc
- Installshield 文件及文件夹操作
- 带你学会区分Scheduled Thread Pool Executor 与Timer
- hht时频谱 matlab 乱序_MATLAB信号频谱分析FFT详解
- maven 阿里云的镜象
- 找出游戏的必胜的策略(博弈论的学习)
- bzoj1562[NOI2009] 变换序列
- 您的包裹“ MySQL灵魂十连” 待签收
- 深度学习(01)——安装anaconda
- kali 安装vmware 14 for linux 出现问题
- 经济下行,薅点羊毛吧!
- 值得注意的4个NPS注意事项
- 【2】C++语法与数据结构之MFC_CList学生管理系统_链表内排序_函数指针
- Python量化选股入门:资本资产定价模型(CAPM)
- 一年级描写下雪的古诗,古诗翻译及重点知识点心田花开汇总
- 私服服务器刷怪文件叫什么,《奇迹》关于刷怪文件Monstersetbase.txt的简单说明
热门文章
- cvs有机添加剂检测_汽车到底有没有必要添加燃油添加剂,如果需要加从什么时间开始用...
- python dict 属性_python的dir()和__dict__属性的区别
- mysql datetime 转date_详解MySQL如何按表创建千万级的压测数据
- Elasticsearch 集群平衡配置
- CentOS6.7安装SBT
- 一、自然语言处理概述
- 统计、可视化两不误,多达19种可视化技能你一定要掌握~~
- VS Code 连接远程服务器运行 Jupyter Notebook
- 简单粗暴, 包邮送 30 本 Python 新书。
- java 文件 字符串_java将字符串写入到txt文件中