Android ListView中item view重复使用带来的问题
来源:互联网 发布:2016淘宝代销选货技巧 编辑:程序博客网 时间:2024/05/22 11:29
本文主要介绍ListView中item view重复使用带来的一个bug。
熟悉ListView的朋友都知道,在ListView的每个item需要花较大的时间进行渲染(比如需要网络获取数据、图片)时,为了使得ListView能够平滑的上下滑动,需要对listView的adapter做一些性能优化,比如数据(图片)异步加载、重复使用item的view。
其中item的重复使用代码如下
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- if (convertView == null && context != null) {
- convertView = LayoutInflater.from(context).inflate(R.layout.list_activity, null);
- }
- ……
- }
可以发现上面主要通过判断convertView若不为空进行重复使用,节省资源加载和创建的时间。
这种重用对textView没有问题,但对于imageView若异步加载图片会出现问题
1、调试adapter的getView函数就会发现,头3个item都是重用第1个item的,所以若异步修改第2和第3个item的imageView第1个也会被修改,导致第1个item的imageView不断闪烁
2、在textView中使用setCompoundDrawablesWithIntrinsicBounds添加图片,若第3个item 的textView异步添加了图片,第1个也会相应被加上
具体原因还没debug出来,解决方法就是不再重用convertView,即
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- convertView = LayoutInflater.from(context).inflate(R.layout.list_activity, null);
- ……
- }
0 0
- Android ListView中item view重复使用带来的问题
- Android ListView中item view重复使用带来的问题
- android listview item 中有buton或者及其子类view失去焦点的问题
- android 改变listview的item中view的值
- android 修改listview item view 的方法
- android listview的item view重用
- android 修改listview item view 的方法
- android中listview点击item不变色的问题
- Android 中listView的多个Item复用问题
- ListView的item中RelativeLayout内view的layout_marginBottom无效的问题
- android ListView中item中两个重叠view,一个显示另一个隐藏的方法
- 解决ListView中getChildAt(int index)获取item的view为null的问题
- Android ListView的Item中的子view共存、抢夺焦点问题
- Android中设置Listview的item之间透明及item点击无响应问题
- android中关于在ListView的子item中有控件抢占ListView的焦点问题
- Android ListView的Item点击失效问题
- 关于ListView中Item的高度问题
- 关于ListView中Item的高度问题
- poj 1006 Biorhythms 中国剩余定理
- Java基础学习第一天
- 397高校毕业设计选题
- android 项目更改包名的方法
- 登录判断 之 asp.net 使用继承类的Session,判断用户是否登录
- Android ListView中item view重复使用带来的问题
- 浅谈数字签名
- UVa 729 - The Hamming Distance Problem
- sum of all integer numbers(坑题,水题)
- NSURL汉字UTF8编码
- C++调用C# DLL函数简单介绍
- 401高校毕业设计选题
- Ubuntu无法连接无线网
- VirtualBox 安装linux后,安装增强功能出错