Android:EventBus使用

於宾白
2023-12-01

今天遇到一个小问题,想在适配器里面传值给activity,就在想有没有一套解决这个问题的开源项目,搜了一下发现,还真有

我主要还是针对我使用的方面,描述的,不会搞的很全面

EventBus使用详解 - 简书概述 EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化Android事件传递,这里的事件可以理解为消息。事件传递既可以用于Android四大...https://www.jianshu.com/p/a040955194fc

首先要有一个实体类,这个就是用来暂存数据的比如,这个我怕太乱,就直接写在activity文件里面了

class Event {

    private String url,name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}

然后就简单了,在activity的onCreate里面注册一下

        //注册监听
        EventBus.getDefault().register(this);

同时候要记住注销掉页面的时候吧注册删掉

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //反注册
        EventBus.getDefault().unregister(this);
    }

准备就绪后,我们开始传递数据,这个传递的地方可以是适配器或者fragment,应该都可以,怎么说呢也不是传递,就是放到实体类里面了

        Event event = new Event();
        event.setName(object.getTv_Name());
        event.setUrl(object.getTv_Url());
        EventBus.getDefault().post(event);

然后我们通过eventBus在实体类里面取数据 这个是要写在activity当中的,不需要再调用了

    @Subscribe
    public void onEvent(Event event) {/* Do something */
        String name = event.getName();
        String url = event.getUrl();
        Log.e("点击",name+":"+url);
    };

这样其实就结束了跑出来调试信息如下

2022-02-12 13:45:02.046 15593-15593/cn.titansys.xview_pptv E/点击: CCTV2
2022-02-12 13:45:02.080 15593-15593/cn.titansys.xview_pptv E/点击: CCTV2:udp://239.45.0.1:5140

我是直接写到项目里面了,代码有点多,就不展示了,不懂的可以看上面的链接

 类似资料: