在两个活动之间检索arrayList的相同值

时间:2018-02-11 17:23:08

标签: android android-activity arraylist

我有一个在activity_1中创建的数组,必须在activity_2中使用。

我是怎么做到的?

我创建了一个类(array_provider.class),它将实现此数组的getter和setter。

所以在activity_1中,我初始化了一个array_provider的对象,然后我用来创建我的数组。

在activity_2中,我还初始化了array_provider的一个对象,然后用来获取我的数组。

但是在activity_2中,当我使用array_provider.getArray()时,即使在我的activity_1中,此数组的大小为7,我也没有数组(大小= 0)。

所以我想在活动之间保持这个数组的相同值。

我在这个问题之前做了一些研究,我找到了两个选择。

  1. SharedPreference =>但是放一个数组非常棘手
  2. 子类应用=>不是真的建议
  3. 还有其他解决方案吗? 我错了吗?

    非常感谢

3 个答案:

答案 0 :(得分:0)

您可以通过转换数组列表将数组列表存储在共享首选项中,也可以创建可以从任何地方访问的静态数组。

答案 1 :(得分:0)

重新考虑您的应用程序的设计!

如果你有一个数组列表,它通常是多个数组(数据集)的更大模型的一部分。这样的模型不应该存在于单个Activity的上下文中,而应该存在于Application的一般上下文中。所有活动都可以访问它们后面的常见应用程序。

现在,如果您创建或编辑此类数据集,则将其存储在模型中的同一个Activity中。然后,您只需通过意图传递数据集的ID。在随后的活动中,您可以通过给定的ID从模型中读取数据集。

默认情况下,Android Studio不会为应用程序创建类。现在很多人认为拥有一个核心应用程序并不重要。如果它不重要,Android库的制造商对ID等简单数据类型的意图不会有限。他们没有设计它来传递模型本身。

答案 2 :(得分:0)

  

所以在activity_1中,我初始化了一个array_provider的对象然后我用了   它来创建我的数组。

     

在activity_2中,我还初始化了array_provider的对象,然后是I   用它来获取我的数组。

     

但是在activity_2中,我使用时没有数组(size = 0)   array_provider.getArray()即使在我的activity_1中,这个数组也有   大小为7。

问题的根源

出现此问题是因为您正在创建ArrayProvider的不同实例,并且它们不相同且它们不共享该值!

可能的解决方案:

  1. 制作数组static。这是最简单的方法,但是你无法在活动之间共享数据时这样做,这是不好的做法。想象一下,有20个活动,几乎所有变量都可以结束static

  2. SharedPreferences。这可能看起来很棘手,但如果你的活动中有一些共享数据,那就是要走的路。

  3. 依赖注射。 (匕首2)例如。它更复杂,不适合初学者,但它可以让您在整个应用程序中使用相同的类实例。

  4. 内部数据库。如果您想存储更多共享数据(不只是一个数组),您可以将其存储在轻量级数据库中,例如Android Room

  5. 结论,在您使用一个数组的情况下,随着您的应用增长,我会将其设为static,您应该研究其他数据共享选项