我正在解析一个巨大的xml,以在活动A的列表视图中显示标题列表。但是,相同的xml也有列表项的详细信息,需要在不同的视图中显示(如列表邮件主题/视图邮件详细信息场景)。
在此列表的单击事件中,我不想使用包加载新活动,解析相同的xml并显示详细视图,而我在活动A本身中具有所需数据。
我想出了一种方法来隐藏我的XML中的show layouts以根据需要执行此操作,但处理后退按钮是一个问题。我可以通过捕获后退按钮动作来做到这一点,但想知道是否有更好的解决方案。
像向A(从A本身)广播意图并以某种方式设法将其添加到活动堆栈。
如果有重复的问题,请不要在我搜索时找到一个。
顺便说一句,我不想用数据库缓存做一个解决方案。答案 0 :(得分:1)
处理背压是最简单的方法。
否则,您也可以将信息传递给第二个活动的Intent。
另一种可能性是在后台运行本地服务,负责加载XML并以方便的方式提供对其信息的访问。
您还可以将XML内容填充到您自己的Application对象中。但是,在某些项目中我没有那么好的经验。
答案 1 :(得分:1)
我会处理背压。只需在活动中使用一个标志,告诉您在哪个视图中(因此在详细视图中会显示概览视图)。
另一种方法是在applicationContext中保存值。比数据库使用更简单的方法。 看看这里的答案:How to declare global variables in Android?
但我肯定会回去处理背压。我有一个类似的解决方案,我在布局中使用相同的列表视图,而不是根据用户所在的详细视图使用不同的适配器。
答案 2 :(得分:1)
我会使用第二项活动。将其他数据(如联系人列表,消息详细信息等)传递给它并显示它。如何将解析后的XML保存在内存中取决于您(静态成员?哎呀!但是它有效)。
现在回到原创活动。您的源XML是否发生了很大变化?也许您可以解析它并将所有数据放入数据库中,以便您可以更快地检索必要(和分层)数据。这样您就不需要处理在内存中存储大量数据,重新解析并且可以更快地执行搜索。
答案 3 :(得分:0)
在此列表的click事件中,我不想使用bundle加载新活动,解析相同的xml并显示详细视图,而我在活动A中拥有所需的数据。
将解析的XML缓存在静态数据成员中。您需要数据的活动首先查看静态数据成员,然后启动解析,当且仅当该缓存不存在时。
IOW,这不是活动问题,而是数据模型问题。使用您的数据模型做得更好,您的活动可以自然地发挥作用。