RxJava2学习之九:购物车合并本地和网络数据
RxJava操作符
本例涉及的RxJava操作符:
- Merge — 将两个Observable发射的数据组合并成一个
结合使用 Retrofit转换器 GsonConverterFactory 和其 RxJava适配器 RxJavaCallAdapterFactory
RxJava实现
添加依赖
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
业务请求接口
public interface Api {
@GET("courses")
Observable<List<Course>> getCourses();
}
RxJava实现
public void merge(View view) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(SERVER_ADDRESS)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
api = retrofit.create(Api.class);
//Merge合并操作符
Observable.merge(getDatasFromLocal(), getDatasFromNetWork())
.subscribe(new Subscriber<List<Course>>() {
@Override
public void onCompleted() {
Log.i(TAG, "onCompleted: ");
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(List<Course> courses) {
for (Course cource : courses){
Log.i(TAG, "onNext: " + cource.getName());
}
}
});
}
private Observable<List<Course>> getDatasFromLocal(){
List<Course> list = new ArrayList<>();
list.add(new Course("数学"));
list.add(new Course("语文"));
return Observable.just(list);
}
private Observable<List<Course>> getDatasFromNetWork(){
return api.getCourses().subscribeOn(Schedulers.io());
}
Python Flask服务端设计
@app.route("/courses")
def courses():
course1 = Cource(id="1", name="物理")
course2 = Cource(id="2", name="化学")
courses = {course1, course2}
json = jsonpickle.encode(courses, unpicklable=False)
return json
class Cource():
def __init__(self, id, name):
self.id = id
self.name = name
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/25/rxjava2-learning-9-merging-local-and-network-data-in-shopping-carts/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
RxJava2学习之九:购物车合并本地和网络数据
RxJava操作符
本例涉及的RxJava操作符:
Merge — 将两个Observable发射的数据组合并成一个
结合使用 Retrofit转换器 GsonConverterFactory 和其 RxJava适配……
文章目录
关闭
共有 0 条评论