MVP+Rxjava+Retrofit+Fresco网络请求数据
来源:互联网 发布:linux系统中文版下载 编辑:程序博客网 时间:2024/04/29 11:24
一次导入各个需要的依赖包
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'io.reactivex:rxjava:1.0.14'
compile 'io.reactivex:rxandroid:1.0.1'
// Okhttp库
compile 'com.squareup.okhttp3:okhttp:3.1.2'
compile 'com.facebook.fresco:fresco:0.11.0'
compile 'com.android.support:recyclerview-v7:25.3.1'
首先创建APP类实现APPlication在内部设置Fresco.initialize(this);并且在manifests文件中设置APP及添加权限
实体类非常简单在这里就不展示了(实体类名:UserBean)
接下来就是创建API类存放URL地址
然后就是创建Service接口类拼接URL并创建Call方法
@GET(“”)
Call<bean> gata()
view接口层设置显示方法:
void showrecy(UserBean bean);model 接口层创建观察者方法:void recy(rx.Observer<UserBean> bean);model层实现model接口:\//创建观察者、订阅者、被观察者Observable.create(new Observable.OnSubscribe<UserBean>() { @Override public void call(Subscriber<? super UserBean> subscriber) { //创建retrofit Retrofit retrofit=new Retrofit.Builder() .baseUrl(Api.URL) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); //创建网络请求接口的实例 RecyService service=retrofit.create(RecyService.class); //封装实体类 Call<UserBean> gata = service.gata(); //异步解析 gata.enqueue(new Callback<UserBean>() { @Override public void onResponse(Call<UserBean> call, Response<UserBean> response) { UserBean body = response.body(); //调用onnext方法传给观察者 bean.onNext(body); } @Override public void onFailure(Call<UserBean> call, Throwable t) { } }); } }).subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(bean);Presenter层 实现(Context、model、view)有参构造方法并创建实现view的方法 //有参构造方法 Context context; RecyModel model; IRecyView view; public RecyPresenter(Context context, IRecyView view) { this.context = context; this.view = view; model=new RecyModel(); } //显示页面方法 public void show(){ model.recyModel(new Observer<UserBean>() { @Override public void onCompleted() {} @Override public void onError(Throwable e) {} @Override public void onNext(UserBean bean) {view.recy(bean);}});}接下来就是Adapter的编辑适配器只是为了能让以上的逻辑代码实现效果展示 首先就是创建需要的XML文件,再对其进行数据调用。首先创建MyViewHolder内部类继承RecyclerView.ViewHolder,其内部就是获取XML布局的控件。接着适配继承RecyclerView.Adapter<适配器名称.内部类名称>,会重写onCreateViewHolder、onBindViewHolder 、getItemCount三个方法;onCreateViewHolder获取XMl文件并实体化内部类对象。onBindViewHolder设置item条目的数据,其中Fresco必须设置URL对象,实现方法如下:AbstractDraweeController build = Fresco.newDraweeControllerBuilder() .setUri(bean.getData().getDefaultGoodsList().get(position).getGoods_img()) .setAutoPlayAnimations(true) .build();holder.img.setController(build); getItemCount就是获取试题类的总长度。最后就是MainActivity类是编写首先在onCreate中new一个Presenter类并实现presenter中的方法 获取控件设置展示格式presenter = new Presenter(this,this); presenter.show(); rl = findViewById(R.id.rlv); rl.setLayoutManager(new LinearLayoutManager(this));接着实现view层,得到一个重写方法,在其内部实例化适配器对象@Override public void showrecy(UserBean bean) { final MyAdapter myAdapter = new MyAdapter(this, bean); runOnUiThread(new Runnable() { @Override public void run() { rl.setAdapter(myAdapter); } }); 到这里完整的效果就会展示出来了。
阅读全文
0 0
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- Retrofit+RxJava+Fresco图片加载框 请求网络数据
- Retrofit+RxJava+Fresco+MVP
- Retrofit+RxJava+Fresco+MVP
- RxJava结合Retrofit使用 自定义封装类结合泛型 请求网络数据+Fresco+RecyclerView+MVP分层
- 简单的MVP+Retrofit+RxJava请求网络数据(一)
- MVP框架使用Retrofit+Rxjava请求网络数据
- Rxjava观察者模式+Retrofit请求GSON数据+Fresco处理图片+Xrecyclerview展示数据+MVP模式
- MVP+XRexyclerview+RxJava+Retrofit+Fresco
- MVP+Retrofit+RxJava+fresco+RecyclerView
- 网络请求框架 Rxjava+ReTrofit+okHttp+MVP
- android+MVP+Retrofit+RxJava做网络请求
- MVP(Retrofit+RXJava)实现网络请求
- MVP+Rxjava+Okhttp+Retrofit+XRecyclerview请求数据
- MVP +Retrofit +Rxjava 请求
- MVP模式(Rxjava+retrofit+fresco)
- MVP+Fresco+RXJava+Retrofit+全选+反选
- Appium环境搭建(Windows版)
- mysql导入数据时 USING BTREE 错误解决办法
- 数据库设计(表与表之间的3种关系)
- 共享单车骑行分析
- Java进阶(十一)强制类型转换
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- Spring boot 嵌入的tomcat不启动
- Spark SQL兼容Hive及扩展
- CentOS 6.5 搭建ftp服务器
- adb 卸载
- Linux中断
- json解析
- windows下进程快照CreateToolhelp32Snapshot()函数的使用
- weblogic发布项目出现内存问题