【问题标题】:Implement some functionality like in Instagram android app实现一些功能,例如在 Instagram android 应用程序中
【发布时间】: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


【解决方案1】:

对于第 2 个问题没有快速回答,但对于第一个问题,为什么不直接使用 FragmentTransaction.addToBackStack 将片段添加到后台堆栈?

这样您就可以通过片段获得自然的后退动作,而不必为每个动作开始新的活动。

【讨论】:

  • 我之前没用过 addToBackStack。如果我将片段添加到后堆栈,它会存储所有片段详细信息(如它的缓存版本)吗?我的意思是它会保留所有变量、图像、视图等吗?
  • Alin ,要保存状态,您必须首先保存实例,当您返回布局时,您已恢复它,它不会自动完成,例如当我尝试 addtobackstack 时,我的 recyclerview 刚刚开始发布并且无法从我离开的地方继续
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 2023-04-05
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
相关资源
最近更新 更多