今天遇到一个小问题,想在适配器里面传值给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
我是直接写到项目里面了,代码有点多,就不展示了,不懂的可以看上面的链接
相关文章
暂无评论...