依赖:

compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'io.reactivex.rxjava2:rxjava:2.1.3'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'org.greenrobot:eventbus:3.1.1'
网络权限:
<uses-permission android:name="android.permission.INTERNET" />
代码实现:
布局:
<cn.bingoogolapple.refreshlayout.BGARefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/bga_rl"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.think.bga.BGARefreshLayout0Activity"> <android.support.v7.widget.RecyclerView
android:id="@+id/rv"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp">
</android.support.v7.widget.RecyclerView> </cn.bingoogolapple.refreshlayout.BGARefreshLayout>
Activity:
public class BGARefreshLayout4Activity extends AppCompatActivity {

    private RecyclerView rv;
private OkHttpClient client;
private RvAdapter adapter;
private String baseUrl = "http://www.qubaobei.com/";
private String urlAll = "http://www.qubaobei.com/ios/cf/dish_list.php/?stage_id=1&limit=10&page=1"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bgarefresh_layout0);
//第一步1,注册.
EventBus.getDefault().register(this);
client = new OkHttpClient
.Builder()
.build();
initView();
request();
} private void request() {
Observable.create(new ObservableOnSubscribe<FoodInfo>() {
@Override
public void subscribe(ObservableEmitter<FoodInfo> e) throws Exception {
//发射数据的逻辑.
Response<FoodInfo> builder = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
.create(NetInterface.class)
.getDataFromNet2(urlAll)
.execute();
FoodInfo body = builder.body();
//第三步,发送事件.
EventBus.getDefault().post(body); }
}).subscribeOn(Schedulers.io())//开启子线程
.subscribe();
} private void initView() {
rv = (RecyclerView) findViewById(R.id.rv); adapter = new RvAdapter(rv);
rv.setLayoutManager(new LinearLayoutManager(this));
rv.setAdapter(adapter); } //第二步,订阅事件,接收数据.
@Subscribe(threadMode = ThreadMode.MAIN)
public void reciveResult(FoodInfo result) {
adapter.setData(result.getData());
} @Override
protected void onDestroy() {
super.onDestroy();
//第一步2,注销.
EventBus.getDefault().unregister(this);
}
}

  子布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:orientation="horizontal"> <ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher" /> <LinearLayout
android:layout_marginLeft="20dp"
android:layout_gravity="center_vertical"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"> <TextView
android:text="11111111"
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:text="2222222"
android:id="@+id/tv_food"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout> </LinearLayout>

适配器:

public class RvAdapter extends BGARecyclerViewAdapter<FoodInfo.DataBean> {

    public RvAdapter(RecyclerView recyclerView) {
super(recyclerView,R.layout.item_rv);
} @Override
protected void fillData(BGAViewHolderHelper helper, int position, FoodInfo.DataBean model) {
helper.setText(R.id.tv,model.getTitle())
.setText(R.id.tv_food,model.getFood_str())
.setImageResource(R.id.iv,R.mipmap.ic_launcher_round);
} }

EventBus结合rxjava2和retrofit2网络获取的更多相关文章

  1. 使用Retrofit2+RxJava2+ProtoBuf实现网络请求

    引言 Retrofit 是一个用于 Android 和 Java 平台的类型安全的,底层使用OkHttp实现网络请求框架.Retrofit 通过将 API 抽象成 Java 接口而让我们连接到 RES ...

  2. Android热身:通过网络获取资源并更新UI组件

    Android热身:通过网络获取资源并更新UI组件 目标 点击"发送请求"按钮,下载某网页的html源码,并显示在TextView控件上:点击"清空",清除Te ...

  3. Android代码优化----PullToRefresh+universal-image-loader实现从网络获取数据并刷新

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. Android ListView从网络获取图片及文字显示

    上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...

  5. 网络获取数据的Xml的Pull解析

    网络获取的XML的Pull解析 <?xml version="1.0" encoding="utf-8" ?> - <students> ...

  6. 网络获取的XML的Pull解析

    <?xml version="1.0" encoding="utf-8" ?> - <students> - <student x ...

  7. Android ListView 和 ***Adapter 从本地/网络获取歌曲列表

    本文内容 环境 项目结构 测试数据 演示 1:SimpleAdapter 演示 2:BaseAdapter 演示 3:CustomLazyList 演示 4:CustomLazyCompleteLis ...

  8. Android LazyList 从网络获取图片并缓存

    原演示地址 本文内容 环境 演示 LazyList 从网络获取图片并缓存 参考资料 本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中.该演示具备将缩 ...

  9. Android Volley 库通过网络获取 JSON 数据

    本文内容 什么是 Volley 库 Volley 能做什么 Volley 架构 环境 演示 Volley 库通过网络获取 JSON 数据 参考资料 Android 关于网络操作一般都会介绍 HttpC ...

随机推荐

  1. [Mac]macOS Mojave :发现 Mac 的新功能。

    1.深色模式 换种颜色看 Mac “深色模式”为桌面和内建应用带来更生动的外观,可让您轻松专注于最重要的内容. 若要在浅色和深色外观之间切换,请打开“系统偏好设置”并点按“通用”. 2.叠放 整理桌面 ...

  2. HoloLens开发手记 - HoloLens真机上手简评

    千呼万唤始出来,终于今天拿到了HoloLens真机. 使用体验 使用自带的应用录制了一段使用视频,如下 设备概览 包装盒 本体 试戴 实际效果 GalaxyExplorer试玩 全息图像贴到现实场景表 ...

  3. iOS开发笔记-根据frame大小动态调整fontSize的自适应文本及圆形进度条控件的实现

    最近同样是新App,设计稿里出现一种圆形进度条的设计,如下: 想了想,圆形进度条实现起来不难,但是其中显示百分比的文本确需要自适应,虽然可以使用时自己设定文本字体的大小,但是这样显得很麻烦,也很low ...

  4. LeetCode--No.015 3Sum

    15. 3Sum Total Accepted: 131800 Total Submissions: 675028 Difficulty: Medium Given an array S of n i ...

  5. RabbitMQ常见错误1

    java.lang.IllegalStateException: Invalid configuration: 'exchange' must be non-null. at com.rabbitmq ...

  6. Apache Flume 1.7.0 源码编译 导入Eclipse

    前言 最近看了看Apache Flume,在虚拟机里跑了一下flume + kafka + storm + mysql架构的demo,功能很简单,主要是用flume收集数据源(http上报信息),放入 ...

  7. EIGRP路由协议的简单理解及应用

    1.EIGRP 增强型内部网关路由协议 他是动态路由协议,是思科私有的路由协议(2013年已经公有化) 特点:   1)路由更新:闪速更新:触发式更新:路由增量更新 2)协议更新采用组播地址来维持EI ...

  8. salesforce lightning零基础学习(十) Aura Js 浅谈三: $A、Action、Util篇

    前两篇分别介绍了Component类以及Event类,此篇将会说一下 $A , Action以及 Util.  一. Action Action类通常用于和apex后台交互,设置参数,调用后台以及对结 ...

  9. FFmpeg编解码处理3-视频编码

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10584937.html FFmpeg编解码处理系列笔记: [0]. FFmpeg时间戳详 ...

  10. 按值传递 vs. 按指针传递

    按值传递还是指针传递? 变量赋值有两种方式:按值传递.按"指针"传递(指针也常称为"引用").不同的编程语言赋值的方式不一样,例如Python是按"指 ...