1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > retrofit+rxjava+mvp网络请求数据

retrofit+rxjava+mvp网络请求数据

时间:2019-10-22 21:10:33

相关推荐

retrofit+rxjava+mvp网络请求数据

//依赖//Fresco第三方加载图片框架依赖 四个依赖compile 'com.facebook.fresco:fresco:1.3.0'// 支持webpcompile 'com.facebook.fresco:webpsupport:1.3.0'// gif加载使用compile 'com.facebook.fresco:animated-gif:1.3.0'// WebP(静态图+动图)加载使用compile 'com.facebook.fresco:animated-webp:1.3.0'compile 'com.jcodecraeer:xrecyclerview:1.5.2'compile 'io.reactivex:rxjava:1.0.14'compile 'io.reactivex:rxandroid:1.0.1'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'compile 'com.squareup.retrofit2:retrofit:2.1.0'compile 'com.squareup.retrofit2:converter-gson:2.1.0'

//main_activity<?xml version="1.0" encoding="utf-8"?><LinearLayoutandroid:orientation="vertical"xmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".day07rk.view.MainActivity"><com.jcodecraeer.xrecyclerview.XRecyclerViewandroid:id="@+id/xrecyclerView"android:layout_width="match_parent"android:layout_height="match_parent"></com.jcodecraeer.xrecyclerview.XRecyclerView></LinearLayout>

//item<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"xmlns:fresco="/apk/res-auto"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="80dp"android:layout_marginLeft="10dp"android:layout_weight="1"android:orientation="vertical"><TextViewandroid:id="@+id/item_count"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="勇士大战火箭"android:textColor="#000"android:textSize="15sp" /><TextViewandroid:id="@+id/item_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="35dp"android:text="时间" /></LinearLayout><com.facebook.drawee.view.SimpleDraweeViewandroid:id="@+id/item_simple"android:layout_width="80dp"android:layout_height="80dp"android:layout_marginLeft="10dp"android:layout_marginRight="10dp"fresco:roundAsCircle="true"/></LinearLayout>

//Model//IModelpackage .day07rk.model;import java.util.Map;/*** Created by ASUS on /5/16.*/public interface IModel {void getJsonDateForm(String url, Map<String,String> params);}

//ModelImplpackage .day07rk.model;import android.util.Log;import java.util.Map;import rx.Observable;import rx.Observer;import rx.Scheduler;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;import .day07rk.http.RetrofitService;import .day07rk.http.RetrofitUtils;import .day07rk.presenter.IPresenter;/*** Created by ASUS on /5/16.*/public class ModelImpl implements IModel {private static final String TAG = "ModelImpl";private final IPresenter iPresenter;public ModelImpl(IPresenter iPresenter){this.iPresenter = iPresenter;}@Overridepublic void getJsonDateForm(String url, Map<String, String> params) {RetrofitUtils retrofitUtils = RetrofitUtils.getRetrofitUtils();RetrofitService service = retrofitUtils.createRequest(RetrofitService.class);Observable<NBABean> observable = service.getRequest(params);observable.subscribeOn(Schedulers.io())//子线程使用io流线程加载数据.observeOn(AndroidSchedulers.mainThread())//主线程展示数据.subscribe(new Observer<NBABean>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) {Log.d(TAG, "onError: "+e.getMessage());iPresenter.getJsonError(e.getMessage());}@Overridepublic void onNext(NBABean nbaBean) {Log.d(TAG, "onNext: "+nbaBean.getMsg());iPresenter.getJsonSuccess(nbaBean.getNewslist());}});}}

//Presenter//IPresenterpackage .day07rk.presenter;import java.util.List;import .day07rk.model.IModel;import .day07rk.model.NBABean;import .day07rk.view.IMainView;/*** Created by ASUS on /5/16.*/ public interface IPresenter {void formDateToJsonView(IModel iModel, IMainView iMainView);void getJsonSuccess(List<NBABean.NewslistBean> newslist);void getJsonError(String error);}

//PresenterImplpackage .day07rk.presenter;import java.util.HashMap;import java.util.List;import java.util.Map;import .day07rk.model.IModel;import .day07rk.model.NBABean;import .day07rk.view.IMainView;/*** Created by ASUS on /5/16.*/public class PresenterImpl implements IPresenter {private IMainView iMainView;@Overridepublic void formDateToJsonView(IModel iModel, IMainView iMainView) {this.iMainView = iMainView;Map<String,String> params = new HashMap<>();params.put("key","71e58b5b2f930eaf1f937407acde08fe");params.put("num",iMainView.getNum());iModel.getJsonDateForm(null,params);}@Overridepublic void getJsonSuccess(List<NBABean.NewslistBean> newslist) {iMainView.getJsonToViewSuccess(newslist);}@Overridepublic void getJsonError(String error) {iMainView.getJsonToViewError(error);}}

//View//IMainViewpackage .day07rk.view;import java.util.List;import .day07rk.model.NBABean;/*** Created by ASUS on /5/16.*/public interface IMainView {void getJsonToViewSuccess(List<NBABean.NewslistBean> newslist);void getJsonToViewError(String error);String getNum();}

//MainViewpackage .day07rk.view;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.util.Log;import com.jcodecraeer.xrecyclerview.XRecyclerView;import java.util.List;import .day07rk.R;import .day07rk.model.ModelImpl;import .day07rk.model.NBABean;import .day07rk.presenter.PresenterImpl;public class MainActivity extends AppCompatActivity implements IMainView {private static final String TAG = "MainActivity";private XRecyclerView xRecyclerView;private List<NBABean.NewslistBean> list;private int num = 10;private MyAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();initData();}private void initViews() {xRecyclerView = findViewById(R.id.xrecyclerView);xRecyclerView.setLayoutManager(new LinearLayoutManager(this));xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {@Overridepublic void onRefresh() {num++;initData();adapter.notifyDataSetChanged();//停止刷新xRecyclerView.refreshComplete();}@Overridepublic void onLoadMore() {num++;initData();adapter.notifyDataSetChanged();//停止加载更多xRecyclerView.loadMoreComplete();}});}private void initData() {PresenterImpl presenter = new PresenterImpl();presenter.formDateToJsonView(new ModelImpl(presenter),this);}@Overridepublic void getJsonToViewSuccess(List<NBABean.NewslistBean> newslist) {this.list = newslist;Log.d(TAG, "getJsonToViewSuccess: "+list);adapter = new MyAdapter(MainActivity.this,list);xRecyclerView.setAdapter(adapter);}@Overridepublic void getJsonToViewError(String error) {Log.d(TAG, "getJsonToViewError: "+error);}@Overridepublic String getNum() {return num+"";}}

//MyAdapterpackage .day07rk.view;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.facebook.drawee.view.SimpleDraweeView;import java.util.List;import retrofit2.http.POST;import .day07rk.R;import .day07rk.model.NBABean;/*** Created by ASUS on /5/16.*/public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {private final Context context;private final List<NBABean.NewslistBean> list;public MyAdapter(Context context, List<NBABean.NewslistBean> newslist){this.context = context;this.list = newslist;}@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(context).inflate(R.layout.xrecycler_item, parent, false);MyViewHolder myViewHolder = new MyViewHolder(view);return myViewHolder;}@Overridepublic void onBindViewHolder(MyViewHolder holder, int position) {String picUrl = list.get(position).getPicUrl();holder.getItem_simple().setImageURI(picUrl);holder.getItem_count().setText(list.get(position).getTitle());holder.getItem_time().setText(list.get(position).getCtime());}@Overridepublic int getItemCount() {return list.size();}class MyViewHolder extends RecyclerView.ViewHolder{private final SimpleDraweeView item_simple;private final TextView item_count;private final TextView item_time;public MyViewHolder(View itemView) {super(itemView);item_simple = itemView.findViewById(R.id.item_simple);item_count = itemView.findViewById(R.id.item_count);item_time = itemView.findViewById(R.id.item_time);}public SimpleDraweeView getItem_simple() {return item_simple;}public TextView getItem_count() {return item_count;}public TextView getItem_time() {return item_time;}}}

//BeanUtils//NewsBeanpackage .day07rk.model;import java.util.List;/*** Created by ASUS on /5/16.*/public class NBABean {/*** code : 200* msg : success* newslist : [{"ctime":"-12-04 13:00","title":"格林:理解科尔吸食大麻 不过我从没吸过","description":"NBA新闻","picUrl":"/uploads/allimg/161204/1-16120411.jpg","url":"/nba/2421.html"},{"ctime":"-12-04 00:00","title":"三分纪录延续!火箭队连续19场比赛命中10+三分球","description":"NBA新闻","picUrl":"/uploads/allimg/161203/1-161203233J3.jpg","url":"/nba/2417.html"},{"ctime":"-12-04 00:00","title":"詹姆斯谈三连败:是时候紧起来了 必须打得男人点","description":"NBA新闻","picUrl":"/uploads/allimg/161203/1-161203234010.jpg","url":"/nba/2418.html"},{"ctime":"-12-03 12:00","title":"骑士输赢都靠三分?那还要詹姆斯做什么?","description":"NBA新闻","picUrl":"/uploads/allimg/161203/1-161203104344.jpg","url":"/nba/2407.html"},{"ctime":"-12-03 00:00","title":"公牛vs骑士直播看点:詹伟兄弟对决","description":"NBA新闻","picUrl":"/uploads/allimg/161202/1-16121205.jpg","url":"/nba/2395.html"},{"ctime":"-12-02 22:00","title":"火箭和勇士联手创NBA三分纪录","description":"NBA新闻","picUrl":"/uploads/allimg/161202/1-16114212.jpg","url":"/nba/2392.html"},{"ctime":"-12-02 22:00","title":"巴克利:勇士打得像女式篮球,太软了!","description":"NBA新闻","picUrl":"/uploads/allimg/161202/1-16115032.jpg","url":"/nba/2394.html"},{"ctime":"-12-02 20:00","title":"詹姆斯完成月最佳球员4连霸的壮举!","description":"NBA新闻","picUrl":"/uploads/allimg/161202/1-161PI0.jpg","url":"/nba/2388.html"},{"ctime":"-12-01 00:00","title":"威少再下三双战书!詹皇会不会先认怂?","description":"NBA新闻","picUrl":"/uploads/allimg/161128/1-16112Q13251.jpg","url":"/nba/2374.html"},{"ctime":"-12-01 00:00","title":"骑士这样的防守想夺冠?也许卫冕只是空谈!","description":"NBA新闻","picUrl":"/uploads/allimg/161130/1-161130222229.jpg","url":"/nba/2375.html"}]*/private String code;private String msg;private List<NewslistBean> newslist;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public List<NewslistBean> getNewslist() {return newslist;}public void setNewslist(List<NewslistBean> newslist) {this.newslist = newslist;}public static class NewslistBean {/*** ctime : -12-04 13:00* title : 格林:理解科尔吸食大麻 不过我从没吸过* description : NBA新闻* picUrl : /uploads/allimg/161204/1-16120411.jpg* url : /nba/2421.html*/private String ctime;private String title;private String description;private String picUrl;private String url;public String getCtime() {return ctime;}public void setCtime(String ctime) {this.ctime = ctime;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public String getPicUrl() {return picUrl;}public void setPicUrl(String picUrl) {this.picUrl = picUrl;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。