我有一個4項列表,我已經使用了listview。我想在接收內部事件時動態更改字符串。我看到,當我收到活動時,我正在設置正確的字符串,但然後調用notifyDataSetChanged()不更新列表視圖
mAdapter.notifyDataSetInvalidated();
mAdapter.notifyDataSetChanged();
但該列表沒有更新。
我有一個4項列表,我已經使用了listview。我想在接收內部事件時動態更改字符串。我看到,當我收到活動時,我正在設置正確的字符串,但然後調用notifyDataSetChanged()不更新列表視圖
mAdapter.notifyDataSetInvalidated();
mAdapter.notifyDataSetChanged();
但該列表沒有更新。
我有過相同的經歷。原因是列表適配器在錯誤的線程上更新,即不是UI線程。這很容易通過改變通過UI線程上的適配器的數據(如我在其他帖子中找到)解決:
runOnUiThread(new Runnable() {
public void run() {
// code that changes the list adapter data
}
});
當然,你總是可以創建一個(內)類實現Runnable所提供的名單適配器和數據添加,插入等。
注意:調用notifyDataSetInvalidated()或notifyDataSetChanged()將不是必需的,因爲它是默認調用的,除非使用setNotifyOnChange(false)明確地關閉它。
我認爲notifyDataSetChanged只適用於在適配器上使用add(或insert),remove或clear函數。 您可以重建列表適配器強制刷新listView。
對不起,我的英文不好
請爲此提供更多的源代碼。 – Reno 2011-03-07 08:07:05