MVP列表展示

来源:互联网 发布:zcash n卡挖矿软件 编辑:程序博客网 时间:2024/05/19 12:38



//依赖://加载图片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'//权限:<uses-permission android:name="android.permission.INTERNET"></uses-permission>//接口:http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0//main.xml文件:<?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="match_parent"    tools:context="com.audrey.mvp.MainActivity">    <android.support.v7.widget.RecyclerView        android:id="@+id/clv"        android:layout_width="match_parent"        android:layout_height="match_parent">    </android.support.v7.widget.RecyclerView></RelativeLayout>//item.xml文件:<?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="60dp"    android:orientation="horizontal">    <TextView        android:id="@+id/tv"        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:gravity="center_vertical"/>    <ImageView        android:id="@+id/iv"        android:layout_width="50dp"        android:layout_height="50dp"        android:layout_gravity="center_vertical"/></LinearLayout>//MainActivity : public class MainActivity extends AppCompatActivity implements ShowView {    private RecyclerView rlv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        rlv = (RecyclerView)findViewById(R.id.clv);        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);        rlv.setLayoutManager(linearLayoutManager);        //P关联V        ShowPresentermpl presentermpl = new ShowPresentermpl(this);        //P关联M 做网络请求        presentermpl.relevance();    }    @Override    public void showData(NewsBean newsBean) {        MyAdapter adapter = new MyAdapter(this,newsBean);        rlv.setAdapter(adapter);    }}//适配器:public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    public MyAdapter(Context context, NewsBean newsBean) {        this.context = context;        this.newsBean = newsBean;    }    Context context;    NewsBean newsBean;    @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<NewsBean.DataBean> data = newsBean.getData();        NewsBean.DataBean dataBean = data.get(position);        String title = dataBean.getTITLE();        String imageurl = dataBean.getIMAGEURL();        myViewHolder.tv.setText(title);        Picasso.with(context).load(imageurl).placeholder(R.mipmap.ic_launcher_round).into(myViewHolder.iv);    }    @Override    public int getItemCount() {        return newsBean.getData().size();    }    public class MyViewHolder extends RecyclerView.ViewHolder{        private final TextView tv;        private final ImageView iv;        public MyViewHolder(View itemView) {            super(itemView);            tv = itemView.findViewById(R.id.tv);            iv = itemView.findViewById(R.id.iv);        }    }}//OnFinishListener :public interface OnFinishListener {    void onSuccess(NewsBean newsBean);}//modle 包:  // ShowModlepublic interface ShowModle {    void getDate(OnFinishListener listener);}         //ShowModleImpl public class ShowModleImpl implements ShowModle {    @Override    public void getDate(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();                NewsBean newsBean = gson.fromJson(responseString, NewsBean.class);                //接口回调                if (listener != null){                    listener.onSuccess(newsBean);                }            }        });    }}//view 包:     //ShowView public interface ShowView {    void showData(NewsBean newsBean);}//presenter 包:     //ShowPresenter public interface ShowPresenter {    void relevance();}    //ShowPresentermpl public class ShowPresentermpl implements ShowPresenter,OnFinishListener {    ShowView showView;    private final ShowModle showModle;    public ShowPresentermpl(ShowView showView) {        this.showView = showView;        showModle = new ShowModleImpl();    }    @Override    public void relevance() {        //P V 关联        showModle.getDate(this);    }    @Override    public void onSuccess(NewsBean newsBean) {        //关联View        showView.showData(newsBean);    }}