MVP+Fresco+RxJava
来源:互联网 发布:阿里云配置tomcat教程 编辑:程序博客网 时间:2024/06/05 05:53
我们先来看一下我们需要的依赖: implementation 'com.android.support:recyclerview-v7:26.1.0' implementation 'io.reactivex.rxjava2:rxjava:2.1.6' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' implementation 'com.facebook.fresco:fresco:0.11.0'在这中间还有RecyclerView的依赖。
现在我们来看一下model层:import com.honey.mvpmvp.app.App;import okhttp3.Callback;import xp.code.okhttp3.utils.OkHttp3Utils;public class NewModel implements IModel{ @Override public void getData(Callback callback) { OkHttp3Utils.doPost(App.URL_POST,null,null,callback); }}model层的接口:import okhttp3.Callback;public interface IModel { //获取数据 void getData(Callback callback);}p层:import android.content.Context;import android.util.Log;import com.google.gson.Gson;import com.honey.mvpmvp.entity.EntityNews;import com.honey.mvpmvp.model.NewModel;import com.honey.mvpmvp.view.IView;import java.io.IOException;import java.util.List;import io.reactivex.Observable;import io.reactivex.ObservableEmitter;import io.reactivex.ObservableOnSubscribe;import io.reactivex.Observer;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.disposables.Disposable;import io.reactivex.schedulers.Schedulers;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Response;public class NewsPresenter { private Context context; private NewModel model; private IView view; public NewsPresenter(Context context,IView view) { this.context = context; this.model = new NewModel(); this.view = view; } public void getDataOK(){ Observable.create(new ObservableOnSubscribe<List<EntityNews.ResultBean.DataBean>>() { @Override public void subscribe(final ObservableEmitter<List<EntityNews.ResultBean.DataBean>> e) throws Exception { model.getData(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); Gson gson=new Gson(); EntityNews entityNews = gson.fromJson(string, EntityNews.class); List<EntityNews.ResultBean.DataBean> data = entityNews.getResult().getData(); e.onNext(data);//将集合传给观察者的onnext方法,是数据回到主线程 e.onComplete();//关闭 } }); } }).subscribeOn(Schedulers.io())//子线程 .observeOn(AndroidSchedulers.mainThread())//主 .subscribe(new Observer<List<EntityNews.ResultBean.DataBean>>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(List<EntityNews.ResultBean.DataBean> dataBeans) { Log.i("==dataBeans==", dataBeans+""); //做view层的操作,将集合的返回的类型给view层展示 view.showData(dataBeans); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); }}v层的接口:import com.honey.mvpmvp.entity.EntityNews;import java.util.List;public interface IView { void showData(List<EntityNews.ResultBean.DataBean> dataList);}MainActivity中的数据代码:import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.util.Log;import com.honey.mvpmvp.adapter.RecyclerViewAdapter;import com.honey.mvpmvp.entity.EntityNews;import com.honey.mvpmvp.presenter.NewsPresenter;import com.honey.mvpmvp.view.IView;import java.util.List;public class MainActivity extends AppCompatActivity implements IView{ private RecyclerView recyclerView; private RecyclerViewAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 initView(); //new一个p层的对象 NewsPresenter presenter=new NewsPresenter(MainActivity.this,this); //p层对象调用p层网络请求的数据 presenter.getDataOK(); } /** * 获取控件 */ private void initView() { recyclerView=findViewById(R.id.recyclerView); //RecyclerView的管理 LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this); recyclerView.setLayoutManager(linearLayoutManager); } @Override public void showData(List<EntityNews.ResultBean.DataBean> dataList) { Log.i("==dataList==",dataList.size()+" "); adapter = new RecyclerViewAdapter(MainActivity.this,dataList); recyclerView.setAdapter(adapter); }}剩下就是bean类、app、适配器中的代码了。记得要添加网络权限!
阅读全文
0 0
- MVP+Fresco+RxJava
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Rectrofit+RXJAVA+Fresco
- Retrofit+RxJava+Fresco+MVP
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Fresco+Rxjava
- Retrofit+RxJava+Fresco+MVP
- MVP+XRexyclerview+RxJava+Retrofit+Fresco
- MVP+Retrofit+RxJava+fresco+RecyclerView
- MVP+Retrotfit+RxJava+Fresco+banner
- MVP模式(Rxjava+retrofit+fresco)
- MVP+Fresco+RXJava+Retrofit+全选+反选
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- 普通MVP+XRexyclerview+RxJava+Retrofit+Fresco
- MVP+RxJava+Retrofit+Fresco+屏幕适配
- android MVP+Rectrofit+RXJAVA+Fresco结合简单使用
- MVP+Rxjava+Fresco+Retrofit实现Recyclerview列表展示
- MVP+ Retrofit+RxJava+XRecyclerView+TabLayout+Fresco结合使用
- 运行pycharm 时出现Cannot read scheme _@user_Monokai.icls from '$ROOT_CONFIG$/colors': Unsupported color
- UIWebView加载html(转)
- ipad横竖屏尺寸(转载)
- python26高级[读写Excel](转)
- tomcat配置使用(转)
- MVP+Fresco+RxJava
- HBase之BlockCache数据读取
- Spring(2)ioc操作
- ardoino人类智能机械未来的希望
- 移植mtd-utils-1.5.1到arm记录
- iOS:KVO的概述与使用(转)
- 各位相加-LintCode
- 昨天申请的免费TexturePacker注册码到了
- Mysql基本用法(转)