最近遇到一个问题,在使用ListView时,用SimpleAdapter提供数据,然后自定义ViewBinder来绑定数据,但是自定义的ListView的子选项却出现了显示状态混乱的问题。
通过调试,最终把问题范围缩小到了public boolean setViewValue(View view, Object data, String,textRepresentation)中。最终找到原因是ListView缓存会使用已经创建的ListView非可视的子选项对象去装载新的数据,导致数据状态是该子选项以前的状态,从而发生奇怪的紊乱现象。产生问题的原因找到,解决问题就是时间和技术的问题了。解决办法之一是:对子选项中的元素重新初始化到默认状态就可以了。
图片说明:
- 不要认为系统创建的ListView子选项的数量和数据的大小总是一样的,当数据一次可以在屏幕显示时,这个值是相等的,但是当一屏无法显示时,这个值就不等了;
- 如果当数据量大的情况下也是创建相同数量的子选项,那么一方面会降低响应时间,影响性能,另一方面也就浪费了不在显示区域的那些子选项对象;
- 系统中子选项对象的个数应该是不小于一屏中显示子选项的最大值『之所以界定比较模糊,是因为没有看相关的源码,所以仅仅是理论上猜测罢了』;
多说一句:解决问题没有什么意思,有意思的是分析产生问题的原因!:)
相关推荐
Android使用缓存优化ListView
android listView图片异步加载(拖动时不加载,双缓存)
Android ListView卡片效果,源码下载。
Android ListView边框圆角美化,可以用来仿iphone的个别界面。相当有用。美观。
android listview 固定表头,固定前几列
Android ListView 实例源码
Android listview viewpager 滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 blog 地址 : http://blog.csdn.net/aaawqqq/article/details/43824631
Android listview 下拉 刷新
android ListView简单用法
android listView 改变选中行的 字体颜色和 图片
android 布局中网格视图 ListView的简单运用 采用的是最简单的ArrayAdapter适配器
ListView缓存机制ListView缓存机制ListView缓存机制ListView缓存机制
Android listview实现自动自动换行!
android listview带有editText的情况,解决editText的焦点问题,及数据错位问题。后2个包没用。
android listview嵌套listview实现折叠列表
android ListView简单示例
Android ListView分页功能源码
android listView 适配器demo
这是一个android listview分页查询显示的demo,使用sqlite数据库,然后每次显示10条,上拉加载更多数据,studio项目
实现了 Android listView 分页功能,代码可以运行,功能完善。