stdying
V2EX  ›  Android

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

  •  
  •   stdying · Apr 11, 2016 · 14156 views
    This topic created in 3683 days ago, the information mentioned may be changed or developed.
    如果在 Adapter 中,事件处理,是直接写匿名类
    还是写接口回调实现;

    如果有 3-4 个事件需要处理,会选择哪种方式处理
    14 replies    2016-04-13 19:43:50 +08:00
    pynix
        1
    pynix  
       Apr 12, 2016 via Android
    多了建议接口。而且归类为一个包。
    pcatzj
        2
    pcatzj  
       Apr 12, 2016
    Handler ?注意内存泄露? anyway
    twoyuan
        3
    twoyuan  
       Apr 12, 2016
    写成适配器里匿名内部类最方便,但不可避免要和业务逻辑耦合。之前封装过一个通用适配器( https://github.com/twiceyuan/CommonAdapter ),就是把整个 ViewHolder 回调用来给外部调用者绑定事件
    wanttofly
        4
    wanttofly  
       Apr 12, 2016
    不是歪楼哈。 Activity 里包含的 Fragment , Fragment 中的 ListView 的 Item 要做点击处理,更新 Activity 中的控件状态。我用的 EventBus 。我想说的是楼主说的 Adapter 里的事件用 EventBus 好像也挺方便的啊。
    stdying
        5
    stdying  
    OP
       Apr 12, 2016
    @pynix 除了处理事件,还有状态的更改,接口多了归类也要好好想想
    @pcatzj 了解,谢谢
    @twoyuan 个人认为事件处理主要涉及业务处理和状态变化。先去看看你实现
    @wanttofly 这个我也在用,我还在想的一个问题是 EventBus 太多也不是很好,不好控制 EventBus 的数量。
    stdying
        6
    stdying  
    OP
       Apr 12, 2016
    @pynix 目前我也倾向于使用接口
    wanttofly
        7
    wanttofly  
       Apr 12, 2016
    @stdying 为什么要控制 EventBus 的数量啊?
    CtrlAltDeleteMe
        8
    CtrlAltDeleteMe  
       Apr 12, 2016
    使用接口处理~
    stdying
        9
    stdying  
    OP
       Apr 12, 2016
    @wanttofly 事件多了,不容易管理,而且发送一个事件,可在多个 activity 或 fragment 中接听
    wanttofly
        10
    wanttofly  
       Apr 13, 2016
    @stdying 搜嘎。不过我是针对每一个事件创建对应的 Bean ,只会发送到指定的 Activity 或者 Fragment 中的。
    stdying
        11
    stdying  
    OP
       Apr 13, 2016
    @wanttofly 搜迪斯奈,细说一下
    wanttofly
        12
    wanttofly  
       Apr 13, 2016
    @stdying EventBus 里面是针对方法的参数类型来进行接收,然后处理的。那比如说我 ButtonA 要做评论处理,那我就建个 CommentEvent 的 Bean,然后 post 的时候使用这个 Bean ,在 Activity 活 Fragment 中写一个参数为 CommentEvent 的处理方法, ButtonB 要做提示处理,那我就建个 ToastEvent 的 Bean,然后 post 的时候使用这个 Bean ,在 Activity 活 Fragment 中写一个参数为 ToastEvent 的处理方法。额,我是这么干的
    CharmingCheung
        13
    CharmingCheung  
       Apr 13, 2016
    Handler 这么多缺陷为什么还用?果断换 RxJava+RxBus
    stdying
        14
    stdying  
    OP
       Apr 13, 2016
    @wanttofly 大概了解了
    @CharmingCheung 可以的,在用
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3194 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 14:31 · PVG 22:31 · LAX 07:31 · JFK 10:31
    ♥ Do have faith in what you're doing.