摘要rxjava简单使用
来源:互联网 发布:js picker 编辑:程序博客网 时间:2024/06/01 07:55
public void getAreaInfoId(final String province, final String city, final String district, OnAreaInfoIdCallback onAreaInfoIdCallback){ mOnAreaInfoIdCallback = onAreaInfoIdCallback; getAreaAddressEntity(new OnAreaAddressCallback() { String mDid; String mCid; String mPid; @Override public void onSuccess(AreaAddressEntity areaAddressEntity) { if(areaAddressEntity!=null && areaAddressEntity.list!=null && areaAddressEntity.list.size()>0){ AreaAddressEntity.AddressData addressData = areaAddressEntity.list.get(0); if(addressData!=null){ List<AreaAddressEntity.ProvinceList> province1 = addressData.province; //rxjava Observable.from(province1) //过滤条件 .filter(new Func1<AreaAddressEntity.ProvinceList, Boolean>() { @Override public Boolean call(AreaAddressEntity.ProvinceList provinceList) { return province!=null && province.equals(provinceList.pname); } }) //平捕相当于for循环 .flatMap(new Func1<AreaAddressEntity.ProvinceList, Observable<AreaAddressEntity.CityList>>() { @Override public Observable<AreaAddressEntity.CityList> call(AreaAddressEntity.ProvinceList provinceList) { L.d("TAG","provinceList = "+ provinceList.pname); mPid = provinceList.pid; return Observable.from(provinceList.city); } }) //过滤条件 .filter(new Func1<AreaAddressEntity.CityList, Boolean>() { @Override public Boolean call(AreaAddressEntity.CityList cityList) { return city!=null && city.equals(cityList.cname); } }) //平捕相当于for循环 .flatMap(new Func1<AreaAddressEntity.CityList, Observable<AreaAddressEntity.DistrictList>>() { @Override public Observable<AreaAddressEntity.DistrictList> call(AreaAddressEntity.CityList cityList) { L.d("TAG","cityList = "+ cityList.cname); mCid = cityList.cid; return Observable.from(cityList.district); } }) //过滤条件 .filter(new Func1<AreaAddressEntity.DistrictList, Boolean>() { @Override public Boolean call(AreaAddressEntity.DistrictList districtList) { return district == null || district.equals(districtList.dname); } }) //订阅->联结Observer .subscribe(new Observer<AreaAddressEntity.DistrictList>() { @Override public void onCompleted() { if (TextUtils.isEmpty(mPid) || TextUtils.isEmpty(mCid)) { mPid = null; mCid = null; mDid = null; } L.d("TAG","mPid ="+ mPid + " mCid="+ mCid + " mDid="+ mDid); mOnAreaInfoIdCallback.onSuccess(mPid, mCid, mDid); } @Override public void onError(Throwable e) { } @Override public void onNext(AreaAddressEntity.DistrictList districtList) { L.d("TAG","districtList = "+ districtList.dname); mDid = districtList.did; } }); } } } @Override public void onFailure() { if(mOnAreaInfoIdCallback!=null){ mOnAreaInfoIdCallback.onFailure(); } } }); }//rxjava :异步。相当于AsyncTask.Handler..../ from:传入数组或是List发出去。filter:相当于要过渡的条件。flatMap:平捕相当于for。just:把参数依次发出去。//Scheduler:线程调。immediate
():直接在当前线程运行,相当于不指定线程,这是默认的Scheduler
。newThead():总是启用新线程,并在新线程执行操作。io():无上线的线程池效率更高,可以重用空闲的线程。mainThread:指定的操作将在 Android 主线程运行//subscribeOn(Schedulers.io()) // 指定 subscribe() 发生在 IO 线程。observeOn(AndroidSchedulers.mainThread()) // 指定 Subscriber 的回调发生在主线程。
0 0
- 摘要rxjava简单使用
- Rxjava+Retrofit 简单使用
- retrofit2+RxJava简单使用
- RxJava的简单使用
- RxJava的简单使用
- Retrofit+Rxjava简单使用
- Rxjava的简单使用
- 简单RxJava使用
- RxJava简单使用
- retrofit2、RxJava简单使用总结
- RxJava学习笔记---简单使用
- RxJava的简单使用入门
- android rxjava的简单使用
- Rxjava的最简单使用
- RxJava的简单使用(一)
- Rxjava+Retrofit的简单使用
- 关于Rxjava的简单使用
- RxJava从入门到放弃1.0--rxjava的简单使用
- 【Spring】web开发 javaConfig方式 图解
- 嵌入式linux开发板使用pulseaudio连接蓝牙耳机播放音频文件
- UVA1586 Molar mass
- 4516: [Sdoi2016]生成魔咒
- Unity一个智能火力点,根据攻击范围自动旋转攻击
- 摘要rxjava简单使用
- android自定义弹性ScrollVIew ,十分简单!
- 实际用户ID,有效用户ID和设置用户ID
- 大数据Top K算法思路
- 堆、栈知识点
- 《CLR via C#》读书笔记-线程同步(二)
- 开源文档的五个趋势
- 第五章
- ycsb cassandra 安装测试