我在操作栏上有一个微调器,在片段中有一个列表视图。 Spinner包含一些文件夹结构,当选择一些文件夹时,它将通过onItemSelected回调中的notifyDatasetChanged()更新微调器数据源并清除listview数据,然后,它将调用runnable来加载文件夹的新数据并向处理程序发送消息通过notifyDatasetChanged()更新listview适配器。问题是当处理程序接收消息和更新适配器时,listview没有改变并且将保持为空,不会调用getview()方法。
似乎问题发生在4.1.1上,而不是4.3上。
由于我需要支持2.3或更高版本,请给我一些建议或解决方法来解决它。
e.g。
onItemSelected(){
backward(folder);
}
backward(folder){
notifyDatasetChanged() for spinner;
clearListViewDataAndNotifyDatasetChanged();
loadDataForFolderInRunnable();
}
loadDataForFolderInRunnable(){
getDataFromHttp();
sendMessageToHandler();
}
handler(){
updateDataSourceForListView();
notifyDatasetChanged();
}
我发现如果在onItemSelected()回调中调用notifyDatasetChanged(),那么listview就不能再刷新了。
android的项目成员告诉我这个问题已得到修复。有谁知道如何解决它或一些工作单?
提前致谢!
答案 0 :(得分:0)
可能线程没有完成加载数据,并且在数据仍在加载时更新列表视图..对于您的处理程序,请尝试以下操作:
handler.post(new Runnable() {
@Override
public void run() {
notifyDataSetChanged();
listView.setAdapter(adapter);
}
});