V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
stdying
V2EX  ›  Android

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

  •  
  •   stdying · 2016-04-11 23:39:45 +08:00 · 6318 次点击
    这是一个创建于 2948 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果在 Adapter 中,事件处理,是直接写匿名类
    还是写接口回调实现;

    如果有 3-4 个事件需要处理,会选择哪种方式处理
    14 条回复    2016-04-13 19:43:50 +08:00
    pynix
        1
    pynix  
       2016-04-12 01:23:58 +08:00 via Android
    多了建议接口。而且归类为一个包。
    pcatzj
        2
    pcatzj  
       2016-04-12 08:58:32 +08:00
    Handler ?注意内存泄露? anyway
    twoyuan
        3
    twoyuan  
       2016-04-12 09:05:13 +08:00
    写成适配器里匿名内部类最方便,但不可避免要和业务逻辑耦合。之前封装过一个通用适配器( https://github.com/twiceyuan/CommonAdapter ),就是把整个 ViewHolder 回调用来给外部调用者绑定事件
    wanttofly
        4
    wanttofly  
       2016-04-12 10:19:53 +08:00
    不是歪楼哈。 Activity 里包含的 Fragment , Fragment 中的 ListView 的 Item 要做点击处理,更新 Activity 中的控件状态。我用的 EventBus 。我想说的是楼主说的 Adapter 里的事件用 EventBus 好像也挺方便的啊。
    stdying
        5
    stdying  
    OP
       2016-04-12 11:25:02 +08:00
    @pynix 除了处理事件,还有状态的更改,接口多了归类也要好好想想
    @pcatzj 了解,谢谢
    @twoyuan 个人认为事件处理主要涉及业务处理和状态变化。先去看看你实现
    @wanttofly 这个我也在用,我还在想的一个问题是 EventBus 太多也不是很好,不好控制 EventBus 的数量。
    stdying
        6
    stdying  
    OP
       2016-04-12 13:15:58 +08:00
    @pynix 目前我也倾向于使用接口
    wanttofly
        7
    wanttofly  
       2016-04-12 13:34:17 +08:00
    @stdying 为什么要控制 EventBus 的数量啊?
    zhonghanwen
        8
    zhonghanwen  
       2016-04-12 14:29:08 +08:00
    使用接口处理~
    stdying
        9
    stdying  
    OP
       2016-04-12 21:10:59 +08:00
    @wanttofly 事件多了,不容易管理,而且发送一个事件,可在多个 activity 或 fragment 中接听
    wanttofly
        10
    wanttofly  
       2016-04-13 09:01:14 +08:00
    @stdying 搜嘎。不过我是针对每一个事件创建对应的 Bean ,只会发送到指定的 Activity 或者 Fragment 中的。
    stdying
        11
    stdying  
    OP
       2016-04-13 12:16:23 +08:00
    @wanttofly 搜迪斯奈,细说一下
    wanttofly
        12
    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
        13
    CharmingCheung  
       2016-04-13 18:53:51 +08:00
    Handler 这么多缺陷为什么还用?果断换 RxJava+RxBus
    stdying
        14
    stdying  
    OP
       2016-04-13 19:43:50 +08:00
    @wanttofly 大概了解了
    @CharmingCheung 可以的,在用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2280 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 00:01 · PVG 08:01 · LAX 17:01 · JFK 20:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.