使用ListView显示数据,其中单个item的xml文件中存在ImageView,且此ImageView的图像内容是从网络上下载下来的。实现的时候,为提供ListView的显示性能,因此在adapter的getView中复用了convertView对象。
功能实现后,测试过程中发现如下问题:
在listview显示的数据项存在翻页的情况下,有的时候滚动完成会出现图片显示错乱或者是相邻两个item的图片显示的是同一张的问题。
问题排查的思路:
1.最开始定位的是ImageView在加载网络图片的时候,有可能会在图片显示对象convertView中的ImageView对象出现线程时序的问题导致的重复。反复验证发现,问题并非出自网络图片的加载机制。此疑点放过。
2.使用比较吐的方法,将getView中的position的值打印出来,查看打印的结果发现:
即使未显示adapter中的第0个元素的情况下,也会出现有大量的日志是第0个元素调用getView的情况。
未解决重复的问题,首先要排除掉第0个元素调用了多次getView的情况。
自行定义了一下问题,一时查看代码也发现不了问题原因在哪里,谷歌一把发现:此文章有提到getView被多次调用的情况:http://my.eoe.cn/fover23/archive/4885.html
按照此文章的问题解决思路,将listview中的在layout文件中的layout_height="wrap_content",修改成 layout_height="match_parent"或者是"fill_parent",解决了第0个元素多次调用getView的问题。
在解决此问题的基础上在测试图片显示重复的问题:发现图片显示重复的问题也没有了。
回滚代码,再次验证重复图片本应该显示的位置,发现出现重复图片的情况是因为应该显示a,b项的图片结果确显示了第0项的图片。
问题启示:android在绘制view的过程中的长宽衡量方法与过程应该要更精确的掌握。
相关推荐
ListView中getView重用好多次,有头像的布局
android listview getview多调用俩周期
以前倒是没有注意listview的getView会重复执行多次,在测试的时候去断点跟踪,发现同一条数据不断的重复执行,下面与大家分享下正确的解决方法,希望对你有所帮助
基于Eclipse开发平台,Android中使用ListView和三种适配器(ArrayAdaper,SimpleAdapter,BaseAdapter)实现数据的填充。
it's a normal Android listview adapter.The adapter extends BaseAdapter...
主要分析Android中Listview滚动过程造成的图片显示重复、错乱、闪烁的原因及解决方法,顺便跟进Listview的缓存机制。 1、原因分析 Listview item 缓存机制:为了使得性能更优,Listview会缓存行item(某行对应的...
Android listview与adapter操作和用法
listview中通用adapter,方法封装,调用方便简单
Adapter的一种写法 package com.xxkjx.jiusanqi; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; ...
listview适配器,包含 ListViewAdapter和ViewHolder以及简单使用demo代码。该适配器能快速简单绑定数据和操作显示数据。可以对其扩充修改
ListView中使用自定义Adapter及时更新数据
这是我一下午的总结,listview常用的方法,和三种基本适配器以及实际开发中通过泛型的适配器以及万能适配器,如果大家感兴趣,这里有文章的地址:http://write.blog.csdn.net/postlist
安卓listview自定义adapter包括demo和一些其他自定义绑定的代码
ListViewAdapter和ViewHolder代码,全面的安卓listview适配器源码。使得使用listview绑定数据显示非常方面
VB 读取Excel表格数据并在ListView控件中显示
ListView异步加载图片,图片错位问题解决方案 * 问题分析:我们在使用AsyncTask异步下载图片的时候,经常会用到convertView的重用,一般情况下,滑动后第一个可见的元素(我们给它命个名,称为A1)和 * listview...
listview 如果里面有很多的子控件会发生id错乱,数据显示重复问题,或者图片显示重复,现在已经完美解决
关于listview item重用导致图片重复加载 图片重新请求
Android之自定义Adapter的ListView