【发布时间】:2013-09-02 12:12:09
【问题描述】:
我喜欢 Instagram for Android 应用中的两件事,我想在我的应用中实现它们。
1.无限回溯片段的历史
如果你点击一个用户,你可以看到他的详细信息,点击关注者将返回关注者列表,点击另一个用户将显示他的详细信息......等等。基本上,您可以多次执行此操作,但是当您返回时,一切都是即时的,无需加载。如何实施?我最初的想法是只有一个带有顶部操作栏的活动,其余的使用片段(一个片段用于用户详细信息,一个片段用于用户列表)等等。问题是我想不出一个让历史倒退的好方法。我能看到的唯一方法是通过缓存所有数据(用户数据/列表适配器)是一个 ArrayList,因此当用户按下返回时,从列表中取出最后一项并实例化片段。有没有更好的方法呢?我想我可以为每个用户交互开始一个新的活动,当用户按下时,他们只需完成当前的活动。在这种情况下,我唯一担心的是内存不足。有没有办法缓存片段的状态?
2.GridView inside ScrollView
关于用户详细信息有两种主要布局:包含用户详细信息的布局和图像的网格视图。当用户滚动时,在滚动结束时,gridview 会获得一组新的项目(滚动时加载)。虽然我知道如何在为 gridview 滚动时实现加载,但我不知道如何在滚动视图中添加 gridview 并继续监听滚动事件
【问题讨论】:
-
对于按下后的第一件事,数据未按要求加载。当您调用该函数以从服务器获取数据时,您必须为该活动中的片段创建一个静态适配器,从中调用片段...并检查如果 adapter==null 则从服务器获取数据,否则您可以直接将适配器设置为 listView 或 GridView。
-
对于第一部分,Fragments 可以做
saveInstanceState(),并在onCreate()中取回。在数据请求和响应之间添加一个磁盘缓存,您就可以保存旧数据,以便在旧片段到达堆栈顶部时快速重复使用。对于第二部分,他们似乎扩展了GridView并添加了标题功能。 -
一方面,使用
addToBackStack(),但您需要自己保存数据。对于两个,你可以让你自己的GridView有一个标题,或者你可以让一个ListView(顶部数据是一个标题)看起来像一个GridView(你可以在这里看到一个小例子github.com/luksprog/DroidPlayground/blob/master/src/com/…) . -
@Alin 你得到第二个问题的答案了吗?
-
@noundla 最后我只需要使用 listview 并为标题添加一种布局,为其余项目添加另一种布局。
标签: android android-fragments android-gridview android-fragmentactivity