从一个列表跳进详情,返回刷新有没有更高端的做法?

逻辑如下:
在一个列表中,点击某个item,跳进这个item里的详情,在详情里可以点赞,点赞刷新为已赞状态,当返回到列表中的时候,点赞需要刷新为已赞状态,当再次进入这个列表的时候,点赞也是显示已赞状态的。
已经知道的思路:

  • startactivityforresult,因为能进这个详情页的列表页有多种,需要判断他从哪个列表页跳进来的,比较麻烦,所以不考虑这个方法

  • 将列表的arraylist的引用传入详情,点赞的时候,去改变这个数据,回到列表页的时候,在列表页的onresume调用notifydatachange完成刷新,但是要把arraylist的引用传入详情,list需要是static,内存不足就给回收,容易报错。

不知道还有没有更高级的思路,最近比较火的RXjava能做到这个吗?eventbus呢?

阅读 7.2k
3 个回答

你说的两种方法都比较LOW,而且实现起来也不简单。

较好一点的方法是内部更新后发送修改广播,外部列表监听修改广播进行数据更新。(原生实现方法)
当然,发布广播和接收的这种机制也能通过EventBus或者RxJava来,可以根据实际需要进行选择。

这显然是典型的Android MVC应用嘛。你应该维护一个模型层的数据类(比如使用单例),这样列表视图(一个activity)和详情视图(另一个activity)都可以引用到数据。
因为数据是独立的,所以你不需要『将列表的arraylist的引用传入详情』。

点击列表界面的某个item进入详情界面后,详情界面只需根据index(或者能惟一标识列表项的,比如uuid,url等)就可以从模型层中取出需要的数据;当详情界面的视图改变时,也可以修改模型层数据(也就是你的点赞与否的状态)。

然后从详情界面返回到列表界面,onResume() 生命周期方法一定会被调用到,只需要调用 ArrayAdapter.notifyDataSetChanged() 就可以刷新列表视图了。

这不是什么『更高级的思路』,也不需要使用复杂的机制。

用广播机制或者otto来做吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题