【发布时间】:2013-12-04 11:29:52
【问题描述】:
我尝试使用 BaseAdapter 创建自定义 Listadapter ,在这个适配器中 images 是 URLs 和适配器必须下载所有东西然后更新视图..
一切都已完成并且工作正常,但我的问题是 我无法移动列表视图当图像仍在加载我应该等待完成加载所有内容然后我可以移动..
我认为问题的发生是因为列表视图在每次更新时都返回顶部索引,因为我更新了每个下载完成的图像,但我不确定因为列表冻结所以我无法移动它来确认,或者有别的东西..
我使用更新列表适配器:
adap.notifyDataSetChanged();
这是所有细节,我希望任何人都知道我该如何解决这个问题,帮助我并告诉我什么是更新视图没有问题的正确方法(返回第一个索引,冻结)..
注意:下载没有问题,我可以移动列表时图片下载只有在加载和更新时出现问题。
解决:
我检查了我的代码,下载功能正常,更新适配器冻结:
adp.notifyDataSetChanged();
更新需要几秒钟,所以我改变了更新方式:
int index = lst.getFirstVisiblePosition();
View v = lst.getChildAt(0);
int top = (v == null) ? 0 : v.getTop();
// ...
adap.notifyDataSetInvalidated();
// restore
lst.setSelectionFromTop(index, top);
【问题讨论】:
标签: android listview listadapter baseadapter custom-adapter