RxJava +Retrofit 简单使用
2024-10-18 18:57:33
1.添加依赖
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
2.生成实体类
Api地址:
http://www.wanandroid.com/article/list/1/json
通过以上地址获取json 使用android studio 的GsonFormat工具生成Article类(内容过长就不贴了...)
3.Api类
...
import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Path; public interface Api { @GET("article/list/{index}/json")
Observable<Article> getArticle(@Path("index") String index);
}
4.activity 获取数据
import android.util.Log;
import com.djdsm.mystudyapp.R;
import com.djdsm.mystudyapp.home.base.BaseActivity;
import com.djdsm.mystudyapp.home.data.model.Article;
import com.djdsm.mystudyapp.home.data.remote.Api;
import io.reactivex.functions.Consumer;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.android.schedulers.AndroidSchedulers;
public class RxRetrofitActivity extends BaseActivity {
@Override
public int intiLayout() {
return R.layout.activity_rxretorfit;
}
...
@Override
public void initData() {
doRequestByRxRetrofit();
}
private void doRequestByRxRetrofit() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.wanandroid.com/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
Api api = retrofit.create(Api.class);
api.getArticle("1").subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Article>() {
@Override
public void accept(Article article) throws Exception {
//操作article...
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Log.e(TAG, "获取失败");
}
});
}
}
5.总结
Rxjava和Retrofit的新版和旧版的使用方式不同
最新文章
- Unity手撸2048小游戏——背景文字控制
- 如何在ashx页面获取Session值
- Linux(SLES)挂载NTFS移动硬盘实践
- 转:更改 centos yum 源
- linux nohup命令
- 01-资料管理器(Directory/DirectoryInfo操作文件夹类)
- freemarker 的replace功能
- java 多线程 一个博客
- HDU1305 Immediate Decodability(水题字典树)
- Flutter之内置动画(转)
- Linux进程管理专题
- ES6新特性-函数的简写(箭头函数)
- Linux之文件恢复[extundelete,针对rm]
- Activiti流程编辑器针对自定义用户角色表优化改造
- apache2反向代理
- Tomcat压缩传输设置
- 【TCP/IP】二、协议的概念
- Mongodb集群与分片 2
- Android-Drawable(三)
- 如何使用Soft-NMS实现目标检测并提升准确率
热门文章
- 牛客编程巅峰赛S2第4场
- 【python】Matplotlib作图常用marker类型、线型和颜色
- Springboot结合Jpa的外键使用
- 【NOIP2017提高A组模拟9.17】猫
- 第6.6节 Python动态执行小结
- 老猿学5G扫盲贴:中国移动网络侧CHF的功能分解说明
- 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例
- 第15.28节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTableWidget详解
- PyQt(Python+Qt)学习随笔:QTreeWidgetItem项列图标的访问方法
- PyQt(Python+Qt)学习随笔:QTableView的gridStyle属性