的內容我有我的activity
一個ListView初步設定一些Adapter
。然後,點擊某個按鈕之後,我只需撥打listView.setAdapter(new DifferentAdapter(this, foo));
更改我的適配器
似乎只是正常工作在第一。用戶界面已更新,一切正常。然後最終,它崩潰和日誌顯示我:
E/AndroidRuntime(29724): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2, class android.widget.ListView) with Adapter(class android.widget.HeaderViewListAdapter)]
我猜它不是那麼簡單,只調用setAdapter
()只要你想。我需要notifyDataSetChanged
什麼嗎?如果有問題,我不使用ListActivity
。
編輯
從下面澄清:這是非常簡單的。我的Activity中有兩個內部類,每個類都擴展了BaseAdapter。所以,我有兩個不同的適配器,在某些時候,我只是想切換ListView控件使用不同的適配器。
您是否使用線程或在的AsyncTask您的活動,並在後臺您要setAdapter? – sat
@sat。不,它非常簡單。我的Activity中有兩個內部類,每個類都擴展了BaseAdapter。所以,我有兩個不同的適配器,在某些時候,我只是想切換ListView控件使用不同的適配器。 – LuxuryMode
切換點可能很重要。在第二次設置適配器之前,請使用notifyDataSetChanged(),然後設置Adapter。 – sat