2014-04-16 77 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

相關問題