简单问题:在 Adapter 中,事件处理

2016-04-11 23:39:45 +08:00
 stdying
如果在 Adapter 中,事件处理,是直接写匿名类
还是写接口回调实现;

如果有 3-4 个事件需要处理,会选择哪种方式处理
10869 次点击
所在节点    Android
14 条回复
pynix
2016-04-12 01:23:58 +08:00
多了建议接口。而且归类为一个包。
pcatzj
2016-04-12 08:58:32 +08:00
Handler ?注意内存泄露? anyway
twoyuan
2016-04-12 09:05:13 +08:00
写成适配器里匿名内部类最方便,但不可避免要和业务逻辑耦合。之前封装过一个通用适配器( https://github.com/twiceyuan/CommonAdapter ),就是把整个 ViewHolder 回调用来给外部调用者绑定事件
wanttofly
2016-04-12 10:19:53 +08:00
不是歪楼哈。 Activity 里包含的 Fragment , Fragment 中的 ListView 的 Item 要做点击处理,更新 Activity 中的控件状态。我用的 EventBus 。我想说的是楼主说的 Adapter 里的事件用 EventBus 好像也挺方便的啊。
stdying
2016-04-12 11:25:02 +08:00
@pynix 除了处理事件,还有状态的更改,接口多了归类也要好好想想
@pcatzj 了解,谢谢
@twoyuan 个人认为事件处理主要涉及业务处理和状态变化。先去看看你实现
@wanttofly 这个我也在用,我还在想的一个问题是 EventBus 太多也不是很好,不好控制 EventBus 的数量。
stdying
2016-04-12 13:15:58 +08:00
@pynix 目前我也倾向于使用接口
wanttofly
2016-04-12 13:34:17 +08:00
@stdying 为什么要控制 EventBus 的数量啊?
zhonghanwen
2016-04-12 14:29:08 +08:00
使用接口处理~
stdying
2016-04-12 21:10:59 +08:00
@wanttofly 事件多了,不容易管理,而且发送一个事件,可在多个 activity 或 fragment 中接听
wanttofly
2016-04-13 09:01:14 +08:00
@stdying 搜嘎。不过我是针对每一个事件创建对应的 Bean ,只会发送到指定的 Activity 或者 Fragment 中的。
stdying
2016-04-13 12:16:23 +08:00
@wanttofly 搜迪斯奈,细说一下
wanttofly
2016-04-13 13:36:16 +08:00
@stdying EventBus 里面是针对方法的参数类型来进行接收,然后处理的。那比如说我 ButtonA 要做评论处理,那我就建个 CommentEvent 的 Bean,然后 post 的时候使用这个 Bean ,在 Activity 活 Fragment 中写一个参数为 CommentEvent 的处理方法, ButtonB 要做提示处理,那我就建个 ToastEvent 的 Bean,然后 post 的时候使用这个 Bean ,在 Activity 活 Fragment 中写一个参数为 ToastEvent 的处理方法。额,我是这么干的
CharmingCheung
2016-04-13 18:53:51 +08:00
Handler 这么多缺陷为什么还用?果断换 RxJava+RxBus
stdying
2016-04-13 19:43:50 +08:00
@wanttofly 大概了解了
@CharmingCheung 可以的,在用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/270320

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX