2013-11-14 87 views
0

我有一個listview與一些數據和2 buttons當按鈕被按下時listview中的數據發生變化。點擊button時,要更改arraylist中的值,請撥打notifyDatasetChanged。所有這些工作正常。但是,當我用一根手指移動列表並單擊該按鈕時,應用程序崩潰,出錯The content of the adapter has changed but ListView did not receive a notification。數據從UI線程本身更改。這發生在列表正在移動並且按鈕被按下時。有什麼辦法可以防止這種情況發生?列表正在移動時更改列表視圖數據

此代碼按鈕點擊。這裏arrlist是arraylist,dailydata()用於將數據添加到數組列表中。

public void onClick(View v) { 
arrlist.clear(); 
adapter.notifyDataSetChanged(); 
dailydata(); 
adapter.notifyDataSetChanged(); 

}

+0

ü可以顯示你的代碼更改數據並調用notifyDatasetChanged? – Budius

回答

0

你可能會改變通知適配器之前的內容。或者,您可以嘗試在ListView滾動時禁用點擊按鈕。分享您的代碼,以便我們可以找到確切的錯誤。

+0

數據更改後立即調用notifyDataSetChanged()。有很多代碼可以發佈。 –

0

ListView正在從Adapter讀數據,當你改變它。在您的Adapter中使用​​塊進行讀取和編輯。這會阻止ListView在調用notifyDatasetChanged()之前讀取數據。

0

如果要創建自定義列表視圖中,您應該上下移動時要小心將各行會動態地膨脹,請檢查您getview方法或張貼在這裏..

+0

getinflateview?你主要getView? 我不重寫getinflateview在我的適配器。 –

+0

只能看到它的視圖。 – pavanmvn