2012-08-23 47 views
1

我发展我的第一个Android应用程序使用多个静态的ArrayList,并希望能在这里得到一些提示。通过整个Android应用程序

我得到一个JSONObject从一个网址,然后将被解析在ArrayList<MyObject>。该列表将在多个选项卡中使用,并根据需要对选项卡进行过滤。这些列表中的对象可以由用户修改,并且更改应该与列表同步。

所以,加快装载时间我已经创建了一个类DataHolder作为含有7的ArrayList一个单,从在不同的排序顺序和过滤准则的一个JSONObject为主。这些列表中的对象是来自原始列表的引用。填充列表工作正常。

该列表将在不同的片段和活动中使用。

现在的问题:第二活动包含片段的标签。在初始化片段之后... DataHolder中的所有阵列列表都计为0!我必须将JSONObject保存在SharedPreferences中,并再次填充以获得List。我无法再加载网址,因为它会减慢应用程序的运行速度,并且因为需要同步Lists而不使用SharedPreferences(我认为)。我已阅读,使用静态变量是不是最佳的解决方案,但它似乎是最简单的方法:(

我能做些什么来解决这个问题?我应该使用Parcelable Objects始终通过Lists身边?或者,也许使用SQLite?还是有其他办法吗?本地操作

+0

目前尚不清楚,你是如何做到这一点 - 是你的'DataHolder'一个POJO还是你延长'Activity'或者是它的内部静态类第一个'Activity'的?如果它不是第二个,那么这绝对不是你应该做的。一个'Activity'永远不应暴露静态方法或成员变量或Activity的内部类。 – Squonk

+0

创建一个'Application'类,并把实例内的数据(你可以在指定'的onCreate()'实例) http://developer.android.com/reference/android/app/Application.html 需要也要在清单中声明 – sherpya

+0

My DataHolder是一个POJO。我已经测试了用相同的结果扩展应用程序。该片段被用作后,名单是0 :(。 – Diana

回答

0

SQLite的方式是明确正确的做法,恕我直言。

您应该使用实习生人数据库存储这样的列表: http://developer.android.com/guide/topics/data/data-storage.html#db

+0

我在想现在的两个主要选择使用sqllite或sharedprefs来保存列表我需要更新我的所有列表视图如果用户进行更改同步更新使用sqllite可能更清洁我会试试这个谢谢! – Diana

0

使用静态列表。当用户出来的那个屏幕(活动)的保存变成数据库。

+0

为什么你需要使用'static'成员的'Activity'如果它一定会被“本地”用? – Squonk

相关问题