2011-03-07 113 views
0

我有一個4項列表,我已經使用了listview。我想在接收內部事件時動態更改字符串。我看到,當我收到活動時,我正在設置正確的字符串,但然後調用notifyDataSetChanged()不更新列表視圖

mAdapter.notifyDataSetInvalidated(); 
mAdapter.notifyDataSetChanged(); 

但該列表沒有更新。

+1

請爲此提供更多的源代碼。 – Reno 2011-03-07 08:07:05

回答

2

我有過相同的經歷。原因是列表適配器在錯誤的線程上更新,即不是UI線程。這很容易通過改變通過UI線程上的適配器的數據(如我在其他帖子中找到)解決:

runOnUiThread(new Runnable() { 
    public void run() { 
     // code that changes the list adapter data 
    } 
}); 

當然,你總是可以創建一個(內)類實現Runnable所提供的名單適配器和數據添加,插入等。

注意:調用notifyDataSetInvalidated()或notifyDataSetChanged()將不是必需的,因爲它是默認調用的,除非使用setNotifyOnChange(false)明確地關閉它。

0

我認爲notifyDataSetChanged只適用於在適配器上使用add(或insert),remove或clear函數。 您可以重建列表適配器強制刷新listView。

對不起,我的英文不好

相關問題