2014-04-16 121 views
0

我有一个操纵栏上的微调和片段中的列表视图。 Spinner包含一些文件夹结构,当选择某个文件夹时,它将通过onItemSelected回调中的notifyDatasetChanged()更新微调器数据源并清除列表视图数据,然后它将调用一个可运行的程序来加载文件夹的新数据并向处理程序发送消息通过notifyDatasetChanged()更新listview适配器。问题是当处理程序接收消息和更新适配器时,listview没有改变并且保持空白,getview()方法不被调用。notifyDatasetChanged()不更新列表视图

看起来问题出现在4.1.1上,而不是4.3上。

请给我一些建议或解决办法,因为我需要支持2.3或更高。

例如

onItemSelected(){ 
    backward(folder); 
} 

backward(folder){ 
    notifyDatasetChanged() for spinner; 

    clearListViewDataAndNotifyDatasetChanged(); 

    loadDataForFolderInRunnable(); 
} 

loadDataForFolderInRunnable(){ 
    getDataFromHttp(); 

    sendMessageToHandler(); 
} 

handler(){ 
    updateDataSourceForListView(); 

    notifyDatasetChanged(); 
} 

我发现,如果我调用onItemSelected notifyDatasetChanged()()回调,则列表视图不能再被刷新。

android项目成员告诉我这个问题已经修复。有谁知道如何解决它或一些工作?

在此先感谢!

+0

https://code.google.com/ p/android/issues/detail?id = 68563 – Simon

回答

0

可能线程不与加载数据完成,而数据仍在加载列表视图更新..你的处理程序请尝试以下操作:

handler.post(new Runnable() { 
@Override 
public void run() { 
    notifyDataSetChanged(); 
    listView.setAdapter(adapter); 
} 
}); 
+0

感谢您的回复,但这不适用于我。 :) – Simon

相关问题