原文网址: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>的数组来记录。

关键代码如下:

[java] view plaincopyprint?
  1. public View getView(final int position, View convertView, ViewGroup parent) {
  2. ViewHolder viewHolder = null;
  3. if (recordMap.get(position) == null) {
  4. convertView = mInflater.inflate(R.layout.listview_item, null);
  5. viewHolder = new ViewHolder(convertView);
  6. Log.i(TAG, "1: " + position);
  7. final int finalP = position;
  8. recordMap.put(position, convertView);
  9. viewHolder.checkBox.setOnClickListener(new OnClickListener() {
  10. @Override
  11. public void onClick(View v) {
  12. CheckBox checkBox = (CheckBox)v;
  13. isChecked.set(finalP, checkBox.isChecked());
  14. }
  15. });
  16. convertView.setTag(viewHolder);
  17. } else {
  18. Log.i(TAG, "2: " + position);
  19. convertView = recordMap.get(position);
  20. viewHolder = (ViewHolder) convertView.getTag();
  21. }
  22. viewHolder.button.setText("click " + position);
  23. viewHolder.checkBox.setChecked(isChecked.get(position));
  24. return convertView;
  25. }

----------------------------------------------- 程序源码下载

转载于:https://www.cnblogs.com/wi100sh/p/4491882.html

【转】Android:ListView常见错位之CheckBox错位相关推荐

  1. Android:ListView常见错位之CheckBox错位

    ListView在什么样的情况下会出现错位?错位的原因是什么?怎么解决?下面的内容会对这些问题做一个讲解. 1.ListView在什么样的情况下会出现错位? 其实错位是当我们的ListView的每个单 ...

  2. android ListView中CheckBox错位的解决

    貌似已经非常晚了,可是还是想记下笔记,想让今天完满. 在ListView中加了checkBox,但是发现点击改变其选中状态的时候,发现其位置错乱.状态改变的并非你选中的,百思不得其解.后面通过上网查资 ...

  3. android ListView包含Checkbox滑动时状态改变

    题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎 ...

  4. [置顶]android ListView包含Checkbox滑动时状态改变

    题外话: 在xamarin android的开发中基本上所有人都会遇到这个小小的坎,的确有点麻烦,当时我也折腾了好一半天,如果你能看到这篇博客,说明你和我当初也是一样的焦灼,如果你想解决掉这个小小的坎 ...

  5. android listview 增加单选 复选,ListView里面加入CheckBox如何实现单选?

    这个的问题也就是点击的时候 checkbox的选项会乱的问题 这个问题的解决很好解决,一个map或者实体类中加个字段就可以搞定.如果想彻底掌握也不麻烦,我这个人不太喜欢贴代码,谈谈原理仅作参考 了解l ...

  6. Android ListView 使用checkbox 实现 单选、多选操作

    项目开发中经常会遇到 ListView +CheckBox 结合使用的场景,比如 手机应用程序管理程序 中的卸载功能,需要让用户去 勾选 要卸载的 应用程序,点击 即可进行批量卸载.等等这样的例子很多 ...

  7. Android ListView中CheckBox选中状态失效的最佳解决方案

    Android ListView中CheckBox选中状态失效: 在ListView中某一项滑到显示区外部的时候,重新划回来时其中的CheckBox的选中状态会重置,本文提出了一种解决方案,操作起来快 ...

  8. Android ListView异步加载图片乱序问题,原因分析及解决方案

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...

  9. android item 点击 获取position,Android ListView 子控件onClick正确获取position的方法

    在实际开发中,我们有时候不仅需要响应ListView的onItemClick,还需要响应其子控件的点击事件,这个时候我们就会 发现,由于复用等原因,如果直接在子控件的onClick事件中调用getVi ...

最新文章

  1. mysql+提升更新语句效率_MySQL加快批量更新 UPDATE优化
  2. linux内核常用函数或宏
  3. 学计算机是什么猿,卡内基梅隆大学生物计算机专业 让你快快乐乐的当一个程序猿...
  4. angularjs 弹出框 $modal传值
  5. 计算机数学基础模拟试题,计算机数学基础(A)模拟试题.doc
  6. Installshield 文件及文件夹操作
  7. 带你学会区分Scheduled Thread Pool Executor 与Timer
  8. hht时频谱 matlab 乱序_MATLAB信号频谱分析FFT详解
  9. maven 阿里云的镜象
  10. 找出游戏的必胜的策略(博弈论的学习)
  11. bzoj1562[NOI2009] 变换序列
  12. 您的包裹“ MySQL灵魂十连” 待签收
  13. 深度学习(01)——安装anaconda
  14. kali 安装vmware 14 for linux 出现问题
  15. 经济下行,薅点羊毛吧!
  16. 值得注意的4个NPS注意事项
  17. 【2】C++语法与数据结构之MFC_CList学生管理系统_链表内排序_函数指针
  18. Python量化选股入门:资本资产定价模型(CAPM)
  19. 一年级描写下雪的古诗,古诗翻译及重点知识点心田花开汇总
  20. 私服服务器刷怪文件叫什么,《奇迹》关于刷怪文件Monstersetbase.txt的简单说明

热门文章

  1. cvs有机添加剂检测_汽车到底有没有必要添加燃油添加剂,如果需要加从什么时间开始用...
  2. python dict 属性_python的dir()和__dict__属性的区别
  3. mysql datetime 转date_详解MySQL如何按表创建千万级的压测数据
  4. Elasticsearch 集群平衡配置
  5. CentOS6.7安装SBT
  6. 一、自然语言处理概述
  7. 统计、可视化两不误,多达19种可视化技能你一定要掌握~~
  8. VS Code 连接远程服务器运行 Jupyter Notebook
  9. 简单粗暴, 包邮送 30 本 Python 新书。
  10. java 文件 字符串_java将字符串写入到txt文件中