我有ListView自定义ArrayAdapter.其中的每一行ListView都有一个图标和一些文本.这些图标在后台下载,缓存,然后使用回调,在各自的位置替换ImageViews.每次getView运行时都会触发从缓存或下载中获取缩略图的逻辑.
现在,据罗曼盖伊说:
"绝对不能保证调用getView()的顺序也不能保证多少次."
我已经看到这种情况发生了,对于一行大小为二的getView()被调用了六次!
如何更改代码以避免重复的缩略图获取请求并处理视图回收?
谢谢.
jBi*_*lbo 14
确切地说,这可能发生在例如你有的时候
android:layout_height="wrap_content"
Run Code Online (Sandbox Code Playgroud)
在你的ListView定义中.将其更改为fill_parent/match_parent将避免它.
来自api.
public abstract View getView (int position, View convertView,
ViewGroup parent)
Run Code Online (Sandbox Code Playgroud)
convertView - 如果可能,重用旧视图.注意:在使用之前,应检查此视图是否为非null且类型是否合适.如果无法转换此视图以显示正确的数据,则此方法可以创建新视图.
因此,如果已经为此特定索引调用了getView,那么convertView将是从第一次调用返回的View对象.
你可以做点什么.
if(!(convertView instanceof ImageView)){
convertView = new ImageView();
//get image from whereever
} else {} // ImageView already created
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11148 次 |
| 最近记录: |