Android/Java网络加载框架Retrofit(三)结合RxJava2与RxAndroid2
来源:互联网 发布:智能手表软件下载 编辑:程序博客网 时间:2024/05/18 00:12
Android/Java网络加载框架Retrofit(三)结合RxJava2与RxAndroid2
把Retrofit与RxAndroid 2与RxJava 2联合使用,实现一个简单功能:加载一批图片到ListView中。
package zhangphil.http;import android.app.ListActivity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import io.reactivex.Observable;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.disposables.CompositeDisposable;import io.reactivex.observers.DisposableObserver;import io.reactivex.schedulers.Schedulers;import okhttp3.ResponseBody;import retrofit2.Retrofit;import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;import retrofit2.http.GET;import retrofit2.http.Path;public class MainActivity extends ListActivity { private MyRetrofitService mRetrofitService; private CompositeDisposable mCompositeDisposable = new CompositeDisposable(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Retrofit mRetrofit = new Retrofit.Builder() .baseUrl("https://www.baidu.com/") .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); mRetrofitService = mRetrofit.create(MyRetrofitService.class); ArrayAdapter mArrayAdapter = new ArrayAdapter(this, 0) { @NonNull @Override public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { if (convertView == null) { convertView = new ImageView(getContext()); } setBitmap("bd_logo1.png", (ImageView) convertView); return convertView; } @Override public int getCount() { return 20; } }; setListAdapter(mArrayAdapter); } private void setBitmap(String picName, final ImageView imageView) { DisposableObserver disposableObserver = new DisposableObserver<ResponseBody>() { @Override public void onNext(@NonNull ResponseBody responseBody) { try { byte[] bytes = responseBody.bytes(); Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); imageView.setImageBitmap(bmp); } catch (Exception e) { e.printStackTrace(); } } @Override public void onComplete() { } @Override public void onError(Throwable e) { } }; mCompositeDisposable.add(disposableObserver); mRetrofitService .getImagesByName(picName) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(disposableObserver); } private interface MyRetrofitService { @GET("img/{picName}") Observable<ResponseBody> getImagesByName(@Path("picName") String picName); } @Override protected void onDestroy() { super.onDestroy(); mCompositeDisposable.clear(); }}
注意在Gradle里面添加引用:
compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.5' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' compile 'com.squareup.retrofit2:retrofit:2.1.0'
阅读全文
0 0
- Android/Java网络加载框架Retrofit(三)结合RxJava2与RxAndroid2
- (安卓) MVP 框架 (Rxjava2+Retrofit)结合 实现网络请求
- Android/Java网络加载框架Retrofit(一)初识
- (三)最流行的网络请求框架Rxjava2+Retrofit之文件上传
- rxjava2 与 retrofit 网络请求
- Android/Java网络加载框架Retrofit(二)load bitmap into ListView
- rxjava2+rxandroid2+retrofit2 封装网络请求
- android框架:Retrofit + RxJava2.0 + Lambda
- Android网络请求框架之Retrofit(三)
- (一)最流行的网络请求框架Rxjava2+Retrofit完美封装
- (二)最流行的网络请求框架Rxjava2+Retrofit之Token处理
- 最流行的网络请求框架Rxjava2+Retrofit完美封装
- RxJava2笔记(3)—RxJava结合Retrofit使用
- RxJava2+retrofit实现网络封装
- Android网络开发框架Retrofit(三:进阶篇,接口实体类封装)
- Android之RxAndroid2、RxJava2的zip应用场景及示例
- Android RxJava2+Retrofit2搭建网络请求框架
- Android(安卓)网络框架之Retrofit网络框架加载数据使用方法
- 用GreenDao3.2,使用数据库so easy!
- 《android studio ndk环境配置》
- BASE64Encoder及BASE64Decoder报错的正确用法
- 解决Springboot运行时Postgrasql报错:ERROR SqlExceptionHelper:146
- 牛客网剑指offer:栈的压入弹出序列是否匹配
- Android/Java网络加载框架Retrofit(三)结合RxJava2与RxAndroid2
- kotlin学习笔记——枚举、封闭类
- web.xml is missing and <failOnMissingWebXml> is set to true错误
- 找不到系统安全日志/var/log/secure文件的问题
- 如何更好的使用阿里云资源编排ROS免费教程
- 什么是设计模式?为什么要使用设计模式?有什么好处?
- Dialog常见问题(布局错误、黑边、圆角、异常)
- 数据库集群技术
- 数论知识