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

问题描述 投票:1回答:2

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

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

我混淆的是获取学生详细数据的方法。我考虑两种方式:

  1. 当单击StudentListActivity中的recyclerview项目时,我会将整个学生对象传递给StudentDetailActivity并定期显示。这种方式会快速且可用,但如果学生不再存在但仍然显示StudentDetailActivity的详细信息,则会出错。
  2. 我只传递学生的id并在oder中调用api到服务器以获得依赖于该id的学生信息。这种方式可以避免第一种情况,因为我们调用服务器并确保学生在数据库中存在。但是需要时间来调用api,让用户等待并可能影响用户体验。

任何人都告诉我这种情况的最佳方法/用户体验是什么,还是还有其他解决方案。请建议我!

谢谢,

android listview android-recyclerview user-experience
2个回答
2
投票

From an UX perspective, I would do the following:

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

Source

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

Source

From an architectural perspective, I would suggest the following:

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

Source


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.