MVP请求
来源:互联网 发布:网络优化教程 编辑:程序博客网 时间:2024/05/18 17:03
<uses-permission android:name="android.permission.INTERNET"/>//Bean包下的 InfoBeanpublic class InfoBean { private String result; private List<DataBean> data; private List<DataScrollBean> dataScroll; public String getResult() { return result; } public void setResult(String result) { this.result = result; } public List<DataBean> getData() { return data; } public void setData(List<DataBean> data) { this.data = data; } public List<DataScrollBean> getDataScroll() { return dataScroll; } public void setDataScroll(List<DataScrollBean> dataScroll) { this.dataScroll = dataScroll; } public static class DataBean { private String ID; private String TITLE; private String SUBTITLE; private String IMAGEURL; private String FROMNAME; private String SHOWTIME; private int RN; public String getID() { return ID; } public void setID(String ID) { this.ID = ID; } public String getTITLE() { return TITLE; } public void setTITLE(String TITLE) { this.TITLE = TITLE; } public String getSUBTITLE() { return SUBTITLE; } public void setSUBTITLE(String SUBTITLE) { this.SUBTITLE = SUBTITLE; } public String getIMAGEURL() { return IMAGEURL; } public void setIMAGEURL(String IMAGEURL) { this.IMAGEURL = IMAGEURL; } public String getFROMNAME() { return FROMNAME; } public void setFROMNAME(String FROMNAME) { this.FROMNAME = FROMNAME; } public String getSHOWTIME() { return SHOWTIME; } public void setSHOWTIME(String SHOWTIME) { this.SHOWTIME = SHOWTIME; } public int getRN() { return RN; } public void setRN(int RN) { this.RN = RN; } } public static class DataScrollBean { private String ID; private String TITLE; private Object SUBTITLE; private String IMAGEURL; private String FROMNAME; private String SHOWTIME; private int RN; public String getID() { return ID; } public void setID(String ID) { this.ID = ID; } public String getTITLE() { return TITLE; } public void setTITLE(String TITLE) { this.TITLE = TITLE; } public Object getSUBTITLE() { return SUBTITLE; } public void setSUBTITLE(Object SUBTITLE) { this.SUBTITLE = SUBTITLE; } public String getIMAGEURL() { return IMAGEURL; } public void setIMAGEURL(String IMAGEURL) { this.IMAGEURL = IMAGEURL; } public String getFROMNAME() { return FROMNAME; } public void setFROMNAME(String FROMNAME) { this.FROMNAME = FROMNAME; } public String getSHOWTIME() { return SHOWTIME; } public void setSHOWTIME(String SHOWTIME) { this.SHOWTIME = SHOWTIME; } public int getRN() { return RN; } public void setRN(int RN) { this.RN = RN; } }}//Myadapter包 下的import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.bwei.Model.InfoBean;import com.bwei.mvpdemo.R;import com.squareup.picasso.Picasso;import java.util.List;public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ Context context; InfoBean infoBean; public MyAdapter(Context context, InfoBean infoBean) { this.context = context; this.infoBean = infoBean; } @Override public RecyclerView.ViewHolder 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(RecyclerView.ViewHolder holder, int position) { MyViewHolder myViewHolder = (MyViewHolder) holder; List<InfoBean.DataBean> data = infoBean.getData(); InfoBean.DataBean dataBean = data.get(position); String title = dataBean.getTITLE(); String imageurl = dataBean.getIMAGEURL(); myViewHolder.tv_title.setText(title); Picasso.with(context).load(imageurl).placeholder(R.mipmap.ic_launcher).into(myViewHolder.iv); } @Override public int getItemCount() { return infoBean.getData().size(); } public class MyViewHolder extends RecyclerView.ViewHolder{ private final TextView tv_title; private final ImageView iv; public MyViewHolder(View itemView) { super(itemView); tv_title = itemView.findViewById(R.id.tv_title); iv = itemView.findViewById(R.id.iv); } }}//Model下的ShowModelpublic interface ShowModel { void getData(OnFinishListener listener);}//Model下的ShowModelImplimport com.bwei.View.OnFinishListener;import com.google.gson.Gson;import com.loopj.android.http.AsyncHttpClient;import com.loopj.android.http.TextHttpResponseHandler;import cz.msebera.android.httpclient.Header;/** * 网络请求框架 */public class ShowModelImpl implements ShowModel { @Override public void getData(final OnFinishListener listener) { String url ="http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0"; AsyncHttpClient asyncHttpClient=new AsyncHttpClient(); asyncHttpClient.get(url, new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { } @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { //直接加到主线程 Gson gson=new Gson(); InfoBean infobean=gson.fromJson(responseString,InfoBean.class); //接口回调 if(listener!=null){ listener.onSuccess(infobean); } } }); }}//Presenter包下的ShowPresenterpublic interface ShowPresenter { void relevance();}//Presenter包下的ShowPresenterImplimport com.bwei.Model.InfoBean;import com.bwei.Model.ShowModel;import com.bwei.Model.ShowModelImpl;import com.bwei.View.OnFinishListener;import com.bwei.View.ShowView;public class ShowPresenterImpl implements ShowPresenter,OnFinishListener { ShowView showView; private final ShowModel showModel; //初始化 public ShowPresenterImpl(ShowView showView){ this.showView = showView; //多态 showModel = new ShowModelImpl(); } @Override public void relevance() { //p跟m关联 showModel.getData(this); } @Override public void onSuccess(InfoBean infoBean) { //关联view showView.showData(infoBean); }}//Presenter包下的OnFinishListenerpublic interface OnFinishListener { void onSuccess(InfoBean infoBean);}//Presenter包下的ShowViewpublic interface ShowView { void showData(InfoBean infoBean);}//MainActivitypackage com.bwei.mvpdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import com.bwei.Adapter.MyAdapter;import com.bwei.Model.InfoBean;import com.bwei.Presenter.ShowPresenterImpl;import com.bwei.View.ShowView;public class MainActivity extends AppCompatActivity implements ShowView { private String url ="http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0"; private RecyclerView rlr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 rlr = (RecyclerView) findViewById(R.id.rlv); //设置成布局管理器 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); rlr.setLayoutManager(linearLayoutManager); //p关联v ShowPresenterImpl presenter = new ShowPresenterImpl(this); //p关联m 做网络请求 presenter.relevance(); } @Override public void showData(InfoBean infoBean) { MyAdapter adapter = new MyAdapter(this,infoBean); rlr.setAdapter(adapter); }}//main布局<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content"><com.chanven.lib.cptr.PtrClassicFrameLayout android:id="@+id/pull" xmlns:cube_ptr="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#e1e1e1" cube_ptr:ptr_keep_header_when_refresh="true" cube_ptr:ptr_pull_to_fresh="false" cube_ptr:ptr_ratio_of_header_height_to_refresh="1.2" cube_ptr:ptr_resistance="1.7"> <android.support.v7.widget.RecyclerView android:id="@+id/rlv" android:layout_width="match_parent" android:layout_height="wrap_content" /></com.chanven.lib.cptr.PtrClassicFrameLayout></RelativeLayout>//item布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="70dp" android:orientation="horizontal"> <ImageView android:id="@+id/iv" android:layout_width="60dp" android:layout_height="60dp"/> <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"/></LinearLayout>//依赖 compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.okio:okio:1.5.0' compile 'com.squareup.okhttp3:okhttp:3.2.0' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' compile 'com.google.code.gson:gson:2.8.2' compile 'com.android.support:recyclerview-v7:26.0.0-alpha1' compile 'com.loopj.android:android-async-http:1.4.9' compile 'com.chanven.lib:cptr:1.0.0'
阅读全文
0 0
- MVP请求
- mvp okhttp3,网络请求
- mvp网络请求数据
- mvp网络请求
- MVP练习网络请求
- MVP练习网络请求
- MVP+Rxjava请求数据
- mvp请求网络数据
- MVP +Retrofit +Rxjava 请求
- MVP post请求
- OkHttp+MVP请求数据
- android MVP模式网络请求
- MVP模式请求网络数据
- Mvp框架+okhttp请求+recyclerview
- MVP+okhttp请求网络接口
- MVP泛型请求数据
- MVP+Retrofit封装网络请求
- 购物车+MVP+retrofit请求
- Unity Shader入门精要 阅读笔记 前言
- 【分治法】快速排序及C++代码
- Unity Shader入门精要 阅读笔记一
- TCP三次握手四次挥手抓包解析
- 心得体会
- MVP请求
- Python 把序列转换为元组的函数tuple
- STM32F407VE单片机使用I2C接口操作内部控制芯片为RA8816的FYD12864-1001A型的12864液晶
- ACM训练周末总结—11月5日
- React native刷新,类似android的广播
- 剑指offer 复杂链表的复制
- 【数据库事务】--事务传播子方法事务失效(老张)
- Jstorm 反压(Backpressure)
- 加载图片和文字