从ListView / RecyclerView处理逻辑显示项目详细信息的最佳方法/ UX是什么

时间:2018-01-03 10:08:08

标签: android listview android-recyclerview user-experience

我正在开发一个只有两个活动的简单应用。

  • 第一个活动(名为StudentListActivity)有一个recyclerview显示学生列表。每个项目都是学生,列表学生数据将从服务器获得。
  • 第二个活动(名为StudentDetailActivity)是特定学生的详细信息,并在点击StudentListActivity中的recyclerview项目时启动。

我感到困惑的是获取学生详细数据的方法。我考虑两种方式:

  1. 当点击StudentListActivity中的recyclerview项目时,我会将整个学生对象传递给StudentDetailActivity并定期显示。这种方式会快速而且总是可用,但如果学生不再存在但仍然显示StudentDetailActivity的详细信息,则会出错。
  2. 我只是传递学生的id并在oder中调用api到服务器以获得取决于该id的学生信息。这种方式可以避免第一种情况,因为我们调用服务器并确保学生在数据库中存在。但是需要时间来调用api,让用户等待并可能影响用户体验。
  3. 任何人都告诉我这种情况的最佳方法/用户体验是什么,还是还有其他解决方案。请建议我!

    谢谢,

2 个答案:

答案 0 :(得分:2)

从UX的角度来看,我会执行以下操作:

让我们说在您的RecyclerView中,每个项目都包含一个名称和图像。当您导航到特定学生的详细活动时,我会将(沿着id)将名称和图像URL传递给其他活动并实施Activity Transitions。有点像:

Source

从那时起,我会使用id来检索其余的信息。我建议不要在意图上发送大数据,因为它们不是为此而设计的。此外,如果您使Activity依赖于对象而不是ID来启动,您将很难启用直接应用程序链接并允许用户从您的应用程序共享页面。还要考虑Activity生命周期以及配置更改时会发生什么。查看更多here,并参见下图:

Source

从架构的角度来看,我建议如下:

实施本地数据库,并确保正确缓存网络请求。这将使您获得更快速的结果和离线就绪的应用程序。在UI和数据源之间,实现存储库模式,类似于:

Source

答案 1 :(得分:1)

我开发的大多数应用程序都遇到了这种情况。我总是喜欢做的是当用户登陆学生详细活动时,从缓存加载(如果可用)并且并行触发Web服务调用。一旦服务器响应可用,就会使用最新信息更新学生详细信息活动并将其存储在缓存中。这种方式转换将非常顺利,用户不会感到等待......