使用详细信息活动刷新ListView的最佳实践

时间:2017-02-01 08:46:58

标签: android listview android-recyclerview

问题/讨论

您认为以下方案的最佳解决方案(现在,2017年)。

  

你有一个列表,单元格包含一些数据:   - 一个名字    - 一个星号,表示该项目是否属于已加星标的项目    - 状态

     

单击此列表项时,将转到详细信息页面   可以将项目添加到您加星标的项目和其他一些东西   改变状态。

     

当您返回时,列表应该更新,以便显示新信息   在列表中。

这是Android应用中非常常见的情况。

我今天如何解决这个问题

  • 使用ListView
  • 列表数据在onResume函数
  • 中设置

这是迄今为止最好的解决方案。 那么你们如何在你的应用程序中处理这个问题,你使用ListViews,RecyclerView,...你在哪里触发列表更新,......

3 个答案:

答案 0 :(得分:0)

您需要做的是在onResume()中进行第一项活动,您需要修改附加到ListView适配器的数据列表,然后调用adapter.notifyDataSetChanged()

@Override
protected void onResume() {
    super.onResume();
    mListOfData.clear();
    mListOfData.addAll(fetchLatestData());
    mAdapter.notifyDataSetChanged();
}

此处,mListOfData是您传递给适配器的数据列表,fetchLatestData()方法应该从您拥有的任何来源获取最新数据。

答案 1 :(得分:0)

当您开始详细信息活动时,请使用startactivityforesult。你知道它是如何工作的,对吧?同时将单击的列表位置保留在int字段中。如果该项目已添加到详细信息页面中的favs,请将结果设置为result_ok。当您导航回列表活动时,在onactivityresult方法中检查结果是否正常。如果是这样,修改那一行列表数据(记住我们在int字段中保存了点击的位置)并通知适配器有关更改

答案 2 :(得分:0)

在我的应用程序中,我使用处理数据的管理器。所有想要使用数据,实现接口的视图都必须由管理员注册。如果要添加/修改/删除数据,则必须在manager类中实现某些方法。在每个方法结束时,您必须通知所有已注册的视图数据已更改。

此链接上的示例代码:Unable to refresh listview data within same fragments used under different tabs