2012-10-18 221 views
0

動態改變的ListView數據我有一個Activity_A那裏是一個的ListView其數據取決於值說依賴安卓:從其他活動

從這個Activity_B用戶進入Activity_B他可以在其中更改依賴項的值

因爲此依賴項必須更改ListView中的數據我必須d重新加載ListView,因此我做到了這一點:

if(//dependency is changed){ 
Intent intent = new Intent(Activity_B.this,Activity_A.class); 
startActivity(intent); 
} 

ListView中填充了新數據。

問題:

當我從這個新加載Activity_A按下設備後退按鈕兩次,我最終在Activit_A與以前的ListView數據。所以,如果我嘗試點擊任何項目我得到這個異常

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 

如何避免這種情況?

謝謝

回答

1

可以基於Activity_AonResume()

1

dependency值要返回到以前的活動,你不應該叫新intent存儲dependencySharedPreferences並填充列表。請致電ACtivity B致電finish()。然後在您的onResume()Activity A中,用新值更新listview

這裏您要求Activity A作爲一個新的活動,並且以前的Activity A仍然在backstack。所以當你按下後,你會到達ACtivity A,這是你的第一個活動。但填入listview的值已更改。所以當你嘗試點擊任何東西時,就會發生異常。那就是問題所在。

因此,當您將值更改爲listview時,請在Activity B中撥打finish()。它會帶你回到Activity A。在活動A的onResume(),更新listview.

0

活動A你有一個的ListView

活動您的ListView設置適配器A的onResume()方法

當你導航到Activity_B通過意圖,改變

依賴的價值。在布通點擊不要再活動啓動A剛剛完成

Activity_B。然後自動的onResume()活性方法A將被調用和

再次列表視圖被加載。因此變爲列表視圖

記值的效果:不要忘了申報依賴靜態。