mvp模式实现列表

MainActivity:

 

package com.example.monizk2;

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 android.widget.ScrollView;

import com.example.monizk2.adapter.ShowAdapter;
import com.example.monizk2.bean.ShowBean;
import com.example.monizk2.presenter.ShowPresenterimpl;
import com.example.monizk2.view.MainView;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;

import java.util.List;

public class MainActivity extends AppCompatActivity implements MainView{

    private PullToRefreshScrollView pull_listview;
    private RecyclerView recycle;
    private ShowPresenterimpl showPresenterimpl;
    private int page=1;
    private List<ShowBean.DataBean> data;
    private ShowAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    private void init() {
        //初始化控件
        pull_listview = findViewById(R.id.pull_listview);
        recycle = findViewById(R.id.recycler);
        recycle.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false));
        showPresenterimpl = new ShowPresenterimpl(this);
        showPresenterimpl.getData(page);
        pull_listview.setMode(PullToRefreshBase.Mode.BOTH);
        pull_listview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                page=1;
                showPresenterimpl.getData(page);
                pull_listview.onRefreshComplete();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                  page++;
                  showPresenterimpl.getData(page);
                  pull_listview.onRefreshComplete();
            }
        });
    }

    @Override
    public void onSuccess(final ShowBean showBean, int page) {
        data = showBean.getData();
        if(data!=null){
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    adapter = new ShowAdapter(MainActivity.this,data);
                    Log.e("ddd", "run: " + showBean.toString() );
                    recycle.setAdapter(adapter);
                    pull_listview.onRefreshComplete();
                }
            });
        }
    }

    @Override
    public void onError(int code) {

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        showPresenterimpl.onDestroys();
    }
}


view接口:

  
package com.example.monizk2.view;

import com.example.monizk2.bean.ShowBean;


public interface MainView {

    void onSuccess(ShowBean showBean, int page);
    void onError(int code);

}
 Model接口:

package com.example.monizk2.model;

import com.example.monizk2.bean.ShowBean;


public interface ShowModel {
    //成功
    void onSuccessData(ShowBean sbean,int page);
    //失败
    void onErrorData(int code);
}
Model实现类:
package com.example.monizk2.model;

import android.util.Log;

import com.example.monizk2.bean.ShowBean;
import com.google.gson.Gson;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class ShowModelimpl {
   private String api="https://www.zhaoapi.cn/product/getProducts?pscid=";
    public void getdata(final ShowModel showOncilter, final int page){
        //创建okhttp
        OkHttpClient okHttpClient = new OkHttpClient
                .Builder()
                .build();
        //创建request
        Request request = new Request
                .Builder()
                .url(api+page)
                .build();
        //执行
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                showOncilter.onErrorData(1);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Log.i("aaa",string.toString());
                Gson gson=new Gson();
                ShowBean showBean = gson.fromJson(string, ShowBean.class);
                showOncilter.onSuccessData(showBean,page);
                Log.i("aaa",showBean.getData().get(0).getTitle());
            }
        });
    }
}

presenter接口:
   
package com.example.monizk2.presenter;


public interface ShowPresenter {
    void onDestroys();
}
Presenter实现类:

package com.example.monizk2.presenter;

import com.example.monizk2.MainActivity;
import com.example.monizk2.bean.ShowBean;
import com.example.monizk2.model.ShowModel;
import com.example.monizk2.model.ShowModelimpl;
import com.example.monizk2.view.MainView;


public class ShowPresenterimpl implements ShowPresenter{

    private MainView mainView;
    private final ShowModelimpl showModelimpl;

    public ShowPresenterimpl(MainView mainView) {
        this.mainView=mainView;
        this.showModelimpl = new ShowModelimpl();

    }
    public void getData(int page){
        showModelimpl.getdata(new ShowModel() {
            @Override
            public void onSuccessData(ShowBean sbean, int page) {
                mainView.onSuccess(sbean,page);
            }

            @Override
            public void onErrorData(int code) {
                mainView.onError(1);
            }
        },page);
    }
    @Override
    public void onDestroys() {
        if(mainView!=null){
            mainView=null;
        }
    }
}
Adapter

package com.example.monizk2.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.monizk2.R;
import com.example.monizk2.bean.ShowBean;

import java.util.List;

public class ShowAdapter extends RecyclerView.Adapter<ShowAdapter.TextHolder>{

    private Context context;
    private List<ShowBean.DataBean> dataBeanList;

    public ShowAdapter(Context context, List<ShowBean.DataBean> dataBeanList) {
        this.context = context;
        this.dataBeanList = dataBeanList;
    }

    @NonNull
    @Override
    public TextHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new TextHolder(LayoutInflater.from(context).inflate(R.layout.showlayout,parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull TextHolder holder, int position) {
     //绑定数据
       holder.price.setText("优惠价:"+dataBeanList.get(position).getPrice());
       holder.title.setText(dataBeanList.get(position).getTitle());
       String path = dataBeanList.get(position).getImages().split("\\|")[0];
        Glide.with(context).load(path).into(holder.ion);
    }

    @Override
    public int getItemCount() {
        return dataBeanList.size();
    }
    class TextHolder extends RecyclerView.ViewHolder{

        private TextView title;
        private ImageView ion;
        private  TextView price;

        public TextHolder(View itemView) {
            super(itemView);
            ion = itemView.findViewById(R.id.ion);
            title = itemView.findViewById(R.id.tv_title);
            price = itemView.findViewById(R.id.price);
        }
    }
}




猜你喜欢

转载自blog.csdn.net/MessageFang/article/details/81056988