如何修改在另一个活动中声明的ArrayList?

时间:2017-07-11 13:12:59

标签: java android android-intent arraylist

我在ArrayList中有一个Activity A来调用它列表。现在Activity A拨打Activity BActivity B来电话Activity C。在Activity C中,我想在列表中插入一些元素,并在我回到Activity A时反映这些更改。

我采取的方法

1)将List声明为公共静态,以便我可以在任何活动中访问它,但问题是当Activity A

调用Activity C时,列表会重新初始化

提前致谢。

7 个答案:

答案 0 :(得分:1)

您可以创建一个新类并将ArrayList放在其中而不是Activity A.因此,当创建活动A时,不会重新初始化ArrayList。

答案 1 :(得分:1)

这似乎不是一个好习惯。

您可以尝试这样做:

  1. 使用您的静态ListContainer创建另一个类mList
  2. 使用ListContainer.getList()
  3. 从任意活动中访问您的列表
  4. 在getList()内,你必须return mList==null ? new ArrayList() : mList
  5. 我认为这是对你的清单做任何你想做的事情的好方法:D

答案 2 :(得分:0)

看看Observer模式,它可能对你有所帮助。 如果您订阅,您可以订阅活动A中的更改并从应用的任何部分推送它们。 这里还有一些有用的库:EventBus,Otto。

答案 3 :(得分:0)

如果您的流量来自A - > B - > C和从C-> B-> A进行更改然后startActivityForResult并在其中设置并传递它将是最好的使用方法..

仍然如果你想使用静态方法,那么它应该只在Activity A中初始化..并且静态arraylist没有办法初始化多一次..它总是需要单个内存分配并初始化只有一次..

答案 4 :(得分:0)

当您需要一些可访问不同活动的变量时,您可以在Application类中声明,定义和修改这些变量。你应该将这些变量声明为静态并添加getter&这些的设定者。请参阅此文章以创建应用程序类:

https://guides.codepath.com/android/Understanding-the-Android-Application-Class

我相信这会对你有所帮助,因为我们已经通过这种方式解决了这个问题。

答案 5 :(得分:0)

使用单例模型类make数组列表在任何地方使用此数组列表并从任何类更改。只需调用classname .arraylist;

  

otto是你可以使用的另一个liabrary你会得到但我重新建立单身模型类

答案 6 :(得分:0)

您可以定义列表static。由于某些问题,static变量并不经常使用,但是您可以将其用于少数(一个或两个)变量,但要谨慎使用。 static变量可以与类名一起使用,例如ShoppingActivity.product_purchases