易学MVP 个络加载数据+XRecyclerView+Retrofit
来源:互联网 发布:057188158198是淘宝吗 编辑:程序博客网 时间:2024/06/05 06:27
第一步:配置权限和导包:
<uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.VIBRATE" />
compile 'com.jcodecraeer:xrecyclerview:1.3.2'compile 'com.squareup.retrofit2:retrofit:2.0.1'compile 'com.squareup.retrofit2:converter-gson:2.0.1'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'compile 'io.reactivex:rxandroid:1.1.0'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'compile 'com.facebook.fresco:fresco:0.9.0+'compile 'com.android.support:mediarouter-v7:25.0.0'compile 'com.android.support:appcompat-v7:25.0.0'compile 'com.android.support:recyclerview-v7:25.0.0'
第二步:创建三个包,创建两个接口,分别是model,view俩个接口:
public interface Iview { void getdata(List<Mysupercalss.DataBean> data);}
public interface Imodel { void login(String mm);}
第三步:model实现接口:
package model;import java.util.List;import bean.API;import bean.Iservers;import bean.Mysupercalss;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import rx.Observable;import rx.Observer;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;/** * Created by Administrator on 2017/11/5 0005. */public class Mymodel implements Imodel { private OnFinishLisenter lisenter; //定义接口 public interface OnFinishLisenter{ void onFinish(List<Mysupercalss.DataBean> userBean); } public void setOnFinishLisenter(OnFinishLisenter lisenter){ this.lisenter = lisenter; } @Override public void login(String mm) { Retrofit retrofit = new Retrofit.Builder().baseUrl(API.MYAPI).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build(); Iservers apiser = retrofit.create(Iservers.class); Observable<Mysupercalss> gethom = apiser.getdata(); gethom.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Mysupercalss>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Mysupercalss mysup) { lisenter.onFinish(mysup.getData()); } }); }}
第四步:Persenter层:
package presenter;import java.util.List;import bean.Mysupercalss;import model.Mymodel;import view.Iview;/** * Created by Administrator on 2017/11/5 0005. */public class Mypre implements Mymodel.OnFinishLisenter { private Iview iview; private Mymodel mymodel; public Mypre(Iview iview) { this.iview = iview; this.mymodel = new Mymodel(); } public void setadapter(String path){ mymodel.setOnFinishLisenter(this); mymodel.login(path); } @Override public void onFinish(List<Mysupercalss.DataBean> userBean) { iview.getdata(userBean); }}
需要注意的是这里使用了接口回调,再调用时需要注意顺序的问题
第五步:MainActivity:
package com.example.mvp_retrofit;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import com.jcodecraeer.xrecyclerview.XRecyclerView;import java.util.List;import bean.API;import bean.MyAdapter;import bean.Mysupercalss;import presenter.Mypre;import view.Iview;public class MainActivity extends AppCompatActivity implements Iview{ XRecyclerView xrecyclerview; List<Mysupercalss.DataBean> list; MyAdapter adapter; Mypre mypre; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xrecyclerview = (XRecyclerView)findViewById(R.id.xrecyclerview); LinearLayoutManager layoutManager = new LinearLayoutManager(this);/* layoutManager.setOrientation(LinearLayoutManager.VERTICAL);*/ xrecyclerview.setLayoutManager(layoutManager); mypre=new Mypre(this); mypre.setadapter(API.MYAPI); } @Override public void getdata(final List<Mysupercalss.DataBean> data) { adapter = new MyAdapter(MainActivity.this, data); xrecyclerview.setAdapter(adapter); xrecyclerview.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { list=data; adapter.notifyDataSetChanged(); xrecyclerview.refreshComplete(); } @Override public void onLoadMore() { list.addAll(data); adapter.notifyDataSetChanged(); xrecyclerview.loadMoreComplete(); } }); }}
还有url和适配器我就不贴了,可以根据自己的json串来做响应的改变.
阅读全文
0 0
- 易学MVP 个络加载数据+XRecyclerView+Retrofit
- MVP+Retrofit+ReJava+Xrecyclerview请求展示数据
- MVP+Rxjava+Okhttp+Retrofit+XRecyclerview请求数据
- mvp+retrofit+rxjava xrecyclerview实现多条目 下拉刷新 下拉加载 点击跳转
- Rxjava观察者模式+Retrofit请求GSON数据+Fresco处理图片+Xrecyclerview展示数据+MVP模式
- MVP+Retrofit+RecyclerView实现加载网络数据
- MVP实现xRecyclerview多条目加载
- MVP+ Retrofit+RxJava+XRecyclerView+TabLayout+Fresco结合使用
- Android——MVP+xRecyclerView+Retrofit+OkHttp+RxJava结合应用
- MVP泛型+xRecyclerView+Retrofit+OkHttp+RxJava多条目,横向
- MVP模式的OKhttp请求网络数据,xrecyclerview上拉刷新,下拉加载
- MVP+XRecyclerView+okhttp+glide,列表或者网格显示所加载的数据
- 使用MVP模式+Retrofit+Fresco加载网络数据
- Mvp+OkHttp+XRecyclerView------上拉加载下拉刷新
- Retrofit+OkHttpClient+Fresco+XRecyclerView+RxJava实现数据展示
- XRecyclerView的上拉下拉加载数据
- XrecyclerView加载数据+切换不同布局
- Android MVP框架+RxJava+Retrofit+cecycleView,请求网络数据并加载
- quanxian
- 算法导论之链表
- 还是httpurlconnection
- 自定义View 圆形进度条
- Retrofit网络请求和MVP的简单的讲解
- 易学MVP 个络加载数据+XRecyclerView+Retrofit
- 【JavaSE_学习笔记】排序、二分查找与数组工具类
- Rxandroid观察者模式(三)
- 综合
- hihocoder 1014 Trie树
- 最大似然估计 (MLE)与 最大后验概率(MAP)在机器学习中的应用
- 十周 项目1(4)
- Hibernate入门(二)
- JS获取元素样式