在整个Android应用程序中使用多个静态ArrayList
我正在开发我的第一个android应用程序,希望在这里得到一些提示 我从一个url获得一个在整个Android应用程序中使用多个静态ArrayList,android,sqlite,arraylist,sharedpreferences,parcelable,Android,Sqlite,Arraylist,Sharedpreferences,Parcelable,我正在开发我的第一个android应用程序,希望在这里得到一些提示 我从一个url获得一个JSONObject,然后将在ArrayList中解析它。该列表将在多个选项卡中使用,并根据需要对选项卡进行筛选。用户可以修改这些列表中的对象,并且更改应与列表同步 因此,为了加快加载时间,我创建了一个类DataHolder,作为一个包含7个arraylist的单例,基于一个JSONObject,以不同的排序顺序和过滤条件。这些列表中的对象是来自原始列表的引用。填充列表效果很好 这些列表将用于不同的片段和活
JSONObject
,然后将在ArrayList
中解析它。该列表将在多个选项卡中使用,并根据需要对选项卡进行筛选。用户可以修改这些列表中的对象,并且更改应与列表同步
因此,为了加快加载时间,我创建了一个类DataHolder
,作为一个包含7个arraylist的单例,基于一个JSONObject
,以不同的排序顺序和过滤条件。这些列表中的对象是来自原始列表的引用。填充列表效果很好
这些列表将用于不同的片段和活动
现在的问题是:第二个活动包含带有片段的选项卡。初始化片段后。。。数据持有者中的所有ArrayList计数为0!我必须将JSONObject
保存在SharedReferences
中,然后再次填充它以获得列表。我无法再次加载url,因为它会大大降低应用程序的速度,而且使用SharedReferences
不是一个选项(我认为),因为需要同步列表。我已经读到使用静态变量不是最佳解决方案,但它似乎是最简单的方法:(
我能做些什么来解决这个问题?我应该使用可包裹对象
并始终传递列表
?或者使用SQLite
?或者有其他方法吗?使用静态列表进行本地操作。当用户从该屏幕出来时(活动)将更改保存到数据库中。SQLite方法无疑是正确的方法,imho
您应该使用内部数据库来存储这些列表:
不清楚您是如何做到这一点的-您的数据持有者是POJO还是扩展了活动
,还是第一个活动
的内部静态类?如果是第二个活动
中的任何一个,那么这绝对不是您应该做的。一个活动
不应该公开静态方法或成员变量或活动的内部类
。创建一个应用程序
类,并将数据放入实例中(您可以在onCreate()中分配实例
)它也需要在清单中声明。我的数据持有者是POJO。我测试了扩展应用程序,结果相同。使用片段后,列表为0:(.如果一个活动只在“本地”使用,为什么需要使用静态成员呢?我现在考虑的两个主要选项是使用sqllite或sharedprefs来保存列表。如果用户做出更改,我需要同步更新我的所有列表视图。使用sqllite可能更干净。我会的试试这个,谢谢!