2012-10-18 144 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将被调用和

再次列表视图被加载。因此变为列表视图

记值的效果:不要忘了申报依赖静态。