逻辑如下:
在一个列表中,点击某个item,跳进这个item里的详情,在详情里可以点赞,点赞刷新为已赞状态,当返回到列表中的时候,点赞需要刷新为已赞状态,当再次进入这个列表的时候,点赞也是显示已赞状态的。
已经知道的思路:
startactivityforresult,因为能进这个详情页的列表页有多种,需要判断他从哪个列表页跳进来的,比较麻烦,所以不考虑这个方法
将列表的arraylist的引用传入详情,点赞的时候,去改变这个数据,回到列表页的时候,在列表页的onresume调用notifydatachange完成刷新,但是要把arraylist的引用传入详情,list需要是static,内存不足就给回收,容易报错。
不知道还有没有更高级的思路,最近比较火的RXjava能做到这个吗?eventbus呢?
这显然是典型的Android MVC应用嘛。你应该维护一个模型层的数据类(比如使用单例),这样列表视图(一个activity)和详情视图(另一个activity)都可以引用到数据。
因为数据是独立的,所以你不需要『将列表的arraylist的引用传入详情』。
点击列表界面的某个item进入详情界面后,详情界面只需根据index(或者能惟一标识列表项的,比如uuid,url等)就可以从模型层中取出需要的数据;当详情界面的视图改变时,也可以修改模型层数据(也就是你的点赞与否的状态)。
然后从详情界面返回到列表界面,onResume()
生命周期方法一定会被调用到,只需要调用 ArrayAdapter.notifyDataSetChanged()
就可以刷新列表视图了。
这不是什么『更高级的思路』,也不需要使用复杂的机制。
你说的两种方法都比较LOW,而且实现起来也不简单。
较好一点的方法是内部更新后发送修改广播,外部列表监听修改广播进行数据更新。(原生实现方法)
当然,发布广播和接收的这种机制也能通过EventBus或者RxJava来,可以根据实际需要进行选择。
用广播机制或者otto来做吧