Retrofit+RxJava+Fresco+MVP
来源:互联网 发布:淘宝店铺营销策略 编辑:程序博客网 时间:2024/05/16 05:10
==================所用的依赖compile 'com.android.support:recyclerview-v7:25.3.1'compile 'com.google.code.gson:gson:2.2.4'compile 'com.facebook.fresco:fresco:0.11.0'compile 'io.reactivex:rxjava:1.0.14'compile 'io.reactivex:rxandroid:1.0.1'//compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'compile 'com.squareup.okhttp3:okhttp:3.1.2'compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'compile 'com.squareup.okhttp3:okhttp:3.9.0'
=================================//网络请求用 的接口public interface GetRequest_In { //get注解中的值 就是拼在baseUrl地址后面的值 配合组成一个完成的请求地址 @GET("top250") Call<Bean> getCall();}
==============================MM层================//创建接口public interface Imm { //将观察者传(bean)进去 public void shuju(Observer<Bean> observer);}//实现接口public class Model implements Imm { private Bean bean; @Override public void shuju(Observer<Bean> observer) { //创建被观察者 Observable.create(new Observable.OnSubscribe<Bean>() { @Override public void call(final Subscriber<? super Bean> subscriber) { //Retrofit的请求数据 Retrofit retrofit=new Retrofit.Builder() //设置网络请求的url .baseUrl("https://api.douban.com/v2/movie/") //设置Gson .addConverterFactory(GsonConverterFactory.create()) //设置Rxjava .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); //创建网络请求接口的实例 GetRequest_In Request=retrofit.create(GetRequest_In.class); //对发的请求进行封装 Call<Bean> call=Request.getCall(); //使用异步发送网络请求 call.enqueue(new Callback<Bean>(){ //请求成功时回调 @Override public void onResponse(Call<Bean> call, Response<Bean> response) { bean=response.body(); //调用OnNext方法把值传给观察者 subscriber.onNext(bean); subscriber.onCompleted(); } //请求失败时的回调 @Override public void onFailure(Call<Bean> call, Throwable t) { } }); } }).subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); }}===========================VV层===========================//展示数据的接口public interface Ivv { //方法有参bean public void ShowView(Bean bean);}============================PP层===============================public class Presenter {//定义属性 Context context; Model mm; Ivv vv; public Presenter(Context context, Ivv vv) { this.context = context; this.vv = vv; mm=new Model(); }//创建方法 public void getData(){ mm.shuju(new Observer<Bean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } //将bean的值让V层接受 @Override public void onNext(Bean bean) { vv.ShowView(bean); } }); }}====================================适配器====================public class Myadapter extends RecyclerView.Adapter<Myadapter.MyViewHolder> { Context context; Bean bean; public Myadapter(Context context, Bean bean) { this.context = context; this.bean = bean; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=View.inflate(context,R.layout.item,null); MyViewHolder holder=new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(bean.getSubjects().get(position).getOriginal_title()); DraweeController dc= Fresco.newDraweeControllerBuilder() .setUri(bean.getSubjects().get(position).getCasts().get(0).getAvatars().getSmall()) .setAutoPlayAnimations(true) .build(); holder.iv.setController(dc); } @Override public int getItemCount() { return bean.getSubjects().size(); } class MyViewHolder extends RecyclerView.ViewHolder { private final SimpleDraweeView iv; private final TextView tv; public MyViewHolder(View itemView) { super(itemView); iv = (SimpleDraweeView) itemView.findViewById(R.id.fec); tv = (TextView) itemView.findViewById(R.id.tv); } }}================================MainActivity==============//实现V层接口public class MainActivity extends AppCompatActivity implements Ivv{ RecyclerView rv; Bean bean; Myadapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Fresco.initialize(this); setContentView(R.layout.activity_main); rv= (RecyclerView) findViewById(R.id.rv); //实例化P层的java类 Presenter pp=new Presenter(this,this); //调用方法 pp.getData(); } //重写的展示数据方法 @Override public void ShowView(Bean bean) { //rv的操作 LinearLayoutManager manager=new LinearLayoutManager(this); rv.setLayoutManager(manager); rv.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL)); //实例化适配器 adapter=new Myadapter(MainActivity.this,bean); //赋值 rv.setAdapter(adapter); }}==============Bean自创========================
阅读全文
0 0
- Retrofit+RxJava+Fresco+MVP
- Retrofit+RxJava+Fresco+MVP
- MVP+XRexyclerview+RxJava+Retrofit+Fresco
- MVP+Retrofit+RxJava+fresco+RecyclerView
- MVP模式(Rxjava+retrofit+fresco)
- MVP+Fresco+RXJava+Retrofit+全选+反选
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- 普通MVP+XRexyclerview+RxJava+Retrofit+Fresco
- MVP+RxJava+Retrofit+Fresco+屏幕适配
- MVP+Rxjava+Fresco+Retrofit实现Recyclerview列表展示
- MVP+ Retrofit+RxJava+XRecyclerView+TabLayout+Fresco结合使用
- MVP+Retrofit+Rxjava+ButterKnife+Fresco+Recyclerview+GreenDao+泛型+完整Demo
- MVP+RXJAVA+Retrofit+Fresco实现简单的效果
- MVP+Fresco+RxJava
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Fresco+Rxjava
- 1009. Product of Polynomials (25)
- 第十一讲 面向对象基本概念、类和对象的定义格式及其内存分析
- 云客Drupal8源码分析之实体entity(六)内容实体储存处理器类
- 输入三个数,按从大到小排序
- Unity3D
- Retrofit+RxJava+Fresco+MVP
- 初学三分法之考研路茫茫——早起看书
- 在数据库中获取当前时间
- MD5方法
- HikariCP VS druid VS c3p0 VS dbcp VS jdbc 数据库连接池性能比对
- 工作笔记--MFC之调整大小
- mybatis 深度延时加载
- liunx python调用c++库(类、函数),传入传出参数
- 欢迎使用CSDN-markdown编辑器