android - 从一个列表跳进详情,返回刷新有没有更高端的做法?
ringa_lee
ringa_lee 2017-04-17 15:28:43
[Android讨论组]

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

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

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

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

ringa_lee
ringa_lee

ringa_lee

全部回复(3)
ringa_lee

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

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

天蓬老师

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

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

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

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

巴扎黑

用广播机制或者otto来做吧

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号