Android:从其他Activity动态更改ListView数据

时间:2012-10-18 08:39:26

标签: android listview

我有 Activity_A ,其中有 ListView ,其数据取决于值依赖

Activity_B 用户转到 Activity_B ,他可以在其中更改依赖关系的值

因为这个依赖项必须更改ListView中的数据,我需要重新加载ListView,因此我这样做了:

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

ListView填充了新数据。

问题:

当我从这个新加载的Activity_A按两次设备后退按钮时,我最终使用之前的ListView数据进入Activit_A。所以,如果我尝试点击任何项目,我会得到例外

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

如何避免这种情况?

谢谢

3 个答案:

答案 0 :(得分:1)

您可以在dependency中存储SharedPreferences值,并根据dependency Activity_A

中的onResume()值填充您的列表

答案 1 :(得分:1)

要返回上一个活动,您不应该致电新intent。只需致电finish()上的ACtivity B即可。然后在onResume()的{​​{1}}中,使用新值更新Activity A

您在此处将listview称为新活动,之前的Activity A仍在Activity A中。因此,当您按下时,您将到达backstack,这是您的第一个活动。但填充ACtivity A的值已发生变化。因此,当您尝试单击任何内容时,会发生异常。这就是问题所在。

因此,当您将值更改为listview时,请在listview中调用finish()。它会带你回到Activity B。在活动A的Activity A中,更新onResume()

答案 2 :(得分:0)

活动A 中您有 ListView

活动A onResume()方法中为 ListView 设置适配器。

当您通过意图导航到 Activity_B 并更改

的值时

<强>依赖即可。在按钮上点击不再重新开始活动A 刚刚完成

<强> Activity_B 即可。然后将自动调用活动A onResume()方法

再次加载 listview 。因此,对 listview

的值产生影响

注意:不要忘记将依赖声明为静态。