我有一个ListView(第一个),我在活动开始时和用户从菜单中选择一些选项时首次设置适配器。 我在同一活动上有另一个列表(第二个),显示某些项目的下载进度。 我已经开始重复任务来更新此ListView以更新每个项目的进度。 现在的问题是,如果我从菜单中选择任何选项来更改第一个列表适配器,它将根据需要无效。 但是如果我的第二个ListView中有一些项目已下载,那么从菜单中选择一个选项来更改第一个列表中的适配器只显示一个空白列表。
但是当我拖动列表时,所有项目都显示出来。 我没有得到问题所在。 请帮忙。
答案 0 :(得分:0)
我刚刚面对问题,发现出了什么问题。这基本上意味着ListAdapter.notifyDataSetChanged()
尚未在主线程上被调用。
这意味着它是通过更改适配器数据而不是在主线程上发生的。例如,呼叫ArrayAdapter.add()
。
解决方案很简单。将适配器数据更改方法放在主线程上。例如,您可以执行以下操作:
Activity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mAdapter.notifyDataSetChanged();
}
});