您认为以下方案的最佳解决方案(现在,2017年)。
你有一个列表,单元格包含一些数据: - 一个名字 - 一个星号,表示该项目是否属于已加星标的项目 - 状态
单击此列表项时,将转到详细信息页面 可以将项目添加到您加星标的项目和其他一些东西 改变状态。
当您返回时,列表应该更新,以便显示新信息 在列表中。
这是Android应用中非常常见的情况。
这是迄今为止最好的解决方案。 那么你们如何在你的应用程序中处理这个问题,你使用ListViews,RecyclerView,...你在哪里触发列表更新,......
答案 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