我正在开发类似于Facebook android应用程序的android应用程序。在时间线屏幕上,我有帖子列表,用户可以喜欢或评论任何帖子。当用户喜欢帖子时,要突出显示类似按钮,我从数组中取出对象,更改其喜欢状态并通知适配器,以便突出显示按钮。
如果用户单击“发布”,则会打开详细信息屏幕。详细信息屏幕用户也可以选择喜欢这个帖子。现在我的问题是,如果用户喜欢详情屏幕中的帖子并返回,他应该在列表中的相同位置,并且应该突出显示该位置上的帖子的按钮。
我尝试通过使用StartActivityForResult()方法启动详细活动并传递所选对象来完成此操作。在onActivityResult()方法中,我从详细活动中获取修改后的对象。我用数组中的修改对象替换了原始post对象并通知适配器。
我不确定我的逻辑是否是好的。我需要一个更好的解决方案。我会非常感谢任何好的建议。
答案 0 :(得分:1)
onActivityResult()只是正确的答案,但你没有完成你的活动,而是按回/ home按钮。因此,在这种情况下,没有信息传递给父活动。
我想到的一个解决方案是通过sharedPreferences或某些ORM修改您的对象。但是,在应用程序的每个动作中从内存中收集数据可能会让人感到不愉快。
我建议将您的detailActivity转换为detailFragment。将信息传递给父活动会更容易。在这种情况下,具有完整列表的活动将启动片段传递已单击的单个元素。之后,您将实现一个与父活动通信的接口,在这种情况下,主列表将始终正确更新。
这种方法需要很长的解释,实际上太多了。我想指出主要步骤,以便为研究提供一个起点。
我希望它可以帮助您找到代码的最终解决方案。
PD:我发现this网址可能包含整个过程,非常详细。
答案 1 :(得分:0)
是。 onActivityResult()是活动通信活动的一个很好的实现。
答案 2 :(得分:0)
你的逻辑没错。
但是如果你想让它变得简单,你可能想尝试一些第三方库,比如EventBus,它可以帮助你轻松地在诸如活动之类的组件之间传递你的信息。
在您的情况下, StickyEvent 会很有帮助。