MVP RecyclerView 列表展示

View层



import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;

import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import bw.com.lx_zk1_mn4.R;
import bw.com.lx_zk1_mn4.adapter.MAdapter;
import bw.com.lx_zk1_mn4.api.UserApi;
import bw.com.lx_zk1_mn4.contract.LogContract;
import bw.com.lx_zk1_mn4.entity.UserBean;
import bw.com.lx_zk1_mn4.net.OkhttpCallBack;
import bw.com.lx_zk1_mn4.presenter.LogPresenter;
import bw.com.lx_zk1_mn4.util.OkhttpUtil;

public class MainActivity extends AppCompatActivity implements LogContract.ILogView {

    private RecyclerView rlv;
    private Button button;
    private int page=1;
    private String api;
    private MAdapter mAdapter;
    private List<UserBean.DataBean> list;
    private LogPresenter logPresenter;
    private UserBean userBean;
    private UserBean userBean1;
    private MAdapter mAdapter1;

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

    private void initData() {
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                HashMap<String,String> params = new HashMap<>();
                params.put("keywords","手机");
                params.put("page",page+"");
                logPresenter.login(params);

                rlv.setAdapter(mAdapter1);
                /*new OkhttpUtil().post(api, params, new OkhttpCallBack() {
                    @Override
                    public void onFile(String msg) {

                    }

                    @Override
                    public void onSuccess(String result) {
                        setram2String(result);
                    }
                });*/
               // new
            }


        });
    }

    private void setram2String(String result) {
        UserBean userBean = new Gson().fromJson(result, UserBean.class);
        if (userBean!=null){

            rlv.setAdapter(mAdapter1);
        }
    }

    private void initView() {
        button = findViewById(R.id.button);
        rlv = findViewById(R.id.rlv);
        logPresenter = new LogPresenter(this);
        api = new UserApi().api;
        list = new ArrayList<>();
        userBean = new UserBean();

        rlv.setLayoutManager(new LinearLayoutManager(this,1,false));
    }

    @Override
    public void OnFail(String msg) {

    }

    @Override
    public void OnSuccess(UserBean userBean) {

        mAdapter1 = new MAdapter(this,userBean.getData());

    }


}

M层



import com.google.gson.Gson;

import java.util.HashMap;

import bw.com.lx_zk1_mn4.api.UserApi;
import bw.com.lx_zk1_mn4.entity.UserBean;
import bw.com.lx_zk1_mn4.net.OkhttpCallBack;
import bw.com.lx_zk1_mn4.net.RequestCallBack;
import bw.com.lx_zk1_mn4.util.OkhttpUtil;

public class LogModel {
    public void login(HashMap<String, String> params, String api, final RequestCallBack requestCallBack){

        OkhttpUtil.getInstance().post(UserApi.api, params, new OkhttpCallBack() {
            @Override
            public void onFile(String msg) {
                requestCallBack.Fail("请求失败");
            }

            @Override
            public void onSuccess(String result) {
                UserBean userBean = stream2String(result);

                requestCallBack.Success(userBean);
            }
        });

    }

    private UserBean stream2String(String result) {
        UserBean userBean = new Gson().fromJson(result, UserBean.class);
        return userBean;
    }
}

P层

;

import java.util.HashMap;

import bw.com.lx_zk1_mn4.api.UserApi;
import bw.com.lx_zk1_mn4.contract.LogContract;
import bw.com.lx_zk1_mn4.entity.UserBean;
import bw.com.lx_zk1_mn4.model.LogModel;
import bw.com.lx_zk1_mn4.net.RequestCallBack;

public class LogPresenter implements LogContract.ILogPerson{

    private final LogModel logModel;
    private final LogContract.ILogView iLogView;
    public LogPresenter(LogContract.ILogView iLogView){
        logModel = new LogModel();
        this.iLogView = iLogView;
}

    @Override
    public void login(HashMap<String, String> params) {
              logModel.login(params,UserApi.api, new RequestCallBack() {
                  @Override
                  public void Fail(String msg) {

                  }

                  @Override
                  public void Success(UserBean userBean) {
                        if (iLogView!=null){
                           iLogView.OnSuccess(userBean);
                        }
                  }
              });
    }
}

```网络请求工具类

import android.os.Handler;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import bw.com.lx_zk1_mn4.net.OkhttpCallBack;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;

public class OkhttpUtil {
private static OkhttpUtil instance;
private final OkHttpClient okHttpClient;
Handler handler = new Handler();

private OkhttpUtil() {
    /*HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
     httpLoggingInterceptor.setLevel(httpLoggingInterceptor.getLevel().BODY);*/
    HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
    httpLoggingInterceptor.setLevel(httpLoggingInterceptor.getLevel());
    okHttpClient = new OkHttpClient
            .Builder()
            .addInterceptor(httpLoggingInterceptor)
            .connectTimeout(5, TimeUnit.SECONDS)
            .readTimeout(5, TimeUnit.SECONDS)
            .connectTimeout(5, TimeUnit.SECONDS)
            .build();

}

public static OkhttpUtil getInstance() {
    if (instance==null){
        synchronized (OkhttpUtil.class){
            if (instance==null){
                instance = new OkhttpUtil();
            }
        }
    }
    return instance;
}
public void post(String api, HashMap<String,String> params, final OkhttpCallBack callBack){
    FormBody.Builder forBody = new FormBody.Builder();
    for (Map.Entry<String, String> p : params.entrySet()) {
        forBody.add(p.getKey(),p.getValue());
    }
    FormBody build = forBody.build();
    final Request request = new Request
            .Builder()
            .url(api)
            .post(build)
            .build();
    okHttpClient.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(final Call call, IOException e) {
            if (callBack!=null){
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                            callBack.onFile("请求失败");
                    }
                });
            }
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String string = response.body().string();

            if (callBack!=null){
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callBack.onSuccess(string);
                    }
                });
            }
        }
    });
}

}

OkhttpCallBack

public interface OkhttpCallBack {
void onFile(String msg);
void onSuccess(String result);
}


RequestCallBack

import bw.com.lx_zk1_mn4.entity.UserBean;

public interface RequestCallBack {
void Fail(String msg);

void Success(UserBean userBean);

}


二次封装

package bw.com.lx_zk1_mn4.contract;

import java.util.HashMap;

import bw.com.lx_zk1_mn4.entity.UserBean;
import bw.com.lx_zk1_mn4.net.RequestCallBack;

public interface LogContract {
public abstract interface ILogPerson{
public abstract void login(HashMap<String,String> params);
}
public interface ILogModel{
void setokhttp(HashMap<String,String> params, String string, RequestCallBack requestCallBack);
}
public interface ILogView{
void OnFail(String msg);
void OnSuccess(UserBean userBean);
}

}


猜你喜欢

转载自blog.csdn.net/weixin_43920581/article/details/85559729