需要导入的依赖
implementation 'com.squareup.okhttp3:okhttp:3.7.0'
implementation 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
IModel
package com.example.zhoukao2.mvp.model;
public interface IModel {
//展示数据
public void getModel(CallBack callBack);
//访问数据回调服务器的数据
public void getDate(String name,String pwd,CallBack callBack);
public interface CallBack{
public void Success(String chenggong);
public void Error(String error);
}
}
ModelMPL
package com.example.zhoukao2.mvp.model;
import com.example.zhoukao2.HTTP.OKHttp;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
public class ModelImpl implements IModel {
//d
private String str = "http://172.17.8.100/small/user/v1/register";
private String strq="http://172.17.8.100/small/commodity/v1/commodityList";
@Override
public void getModel(final CallBack callBack) {
OKHttp.OkHttpDoGet(strq, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
callBack.Success(string);
}
});
}
@Override
public void getDate(String name, String pwd, final CallBack callBack) {
OKHttp.OkHTTPPOst(str, name, pwd, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String s = response.body().string();
callBack.Success(s);
}
});
}
}
Ip
package com.example.zhoukao2.mvp.presenter;
import com.example.zhoukao2.mvp.view.IView;
import java.security.PublicKey;
public interface IPresenter {
//展示数据
public void getModel();
//绑定IView 和解绑IView
public void Attach(IView iView);
public void Datach (IView iView);
//绑定Model
public void request(String name,String pwd);
}
PrensenterIMPL
package com.example.zhoukao2.mvp.presenter;
import com.example.zhoukao2.mvp.model.IModel;
import com.example.zhoukao2.mvp.model.ModelImpl;
import com.example.zhoukao2.mvp.view.IView;
import java.lang.ref.SoftReference;
public class PresenterImpl implements IPresenter {
//绑定Model
//View
IView iView;
private IModel iModel;
private SoftReference<IModel> reference;
@Override
public void getModel() {
iModel.getModel(new IModel.CallBack() {
@Override
public void Success(String chenggong) {
iView.getData(chenggong);
}
@Override
public void Error(String error) {
}
});
}
@Override
public void Attach(IView iView) {
this.iView=iView;
//实例化调用Model的对象
iModel=new ModelImpl();
reference=new SoftReference<IModel>(iModel);
}
//解绑
@Override
public void Datach(IView iView) {
reference.clear();
}
@Override
public void request(String name, String pwd) {
//调用IModel的方法并且穿个Iview
iModel.getDate(name, pwd, new IModel.CallBack() {
@Override
public void Success(String chenggong) {
iView.ShowData(chenggong);
}
@Override
public void Error(String error) {
}
});
}
}
IView
package com.example.zhoukao2.mvp.view;
public interface IView {
//展示数据
public void ShowData(String requesone);
//展示列表
public void getData(String data);
}
Activity层次
package com.example.zhoukao2;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import com.example.zhoukao2.adapter.Adapter;
import com.example.zhoukao2.bean.ddd;
import com.example.zhoukao2.mvp.presenter.IPresenter;
import com.example.zhoukao2.mvp.presenter.PresenterImpl;
import com.example.zhoukao2.mvp.view.IView;
import com.google.gson.Gson;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class TwoActivity extends AppCompatActivity implements IView {
@BindView(R.id.recycler_view)
RecyclerView recyclerView;
private IPresenter iPresenter;
private List<ddd.ResultBean.MlssBean.CommodityListBeanXX> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
ButterKnife.bind(this);
iPresenter = new PresenterImpl();
iPresenter.Attach(this);
//Ip中展示数据的方法
iPresenter.getModel();
//防止跳过布局
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
}
@Override
protected void onDestroy() {
super.onDestroy();
iPresenter.Datach(this);
}
@Override
public void ShowData(String requesone) {
}
@Override
public void getData(final String data) {
Log.i("cccc", data.toString());
runOnUiThread(new Runnable() {
@Override
public void run() {
Gson gson = new Gson();
ddd ddd1 = gson.fromJson(data, ddd.class);
ddd.ResultBean.MlssBean mlss = ddd1.getResult().getMlss();
list = mlss.getCommodityList();
Adapter adapter = new Adapter(TwoActivity.this, list);
recyclerView.setAdapter(adapter);
}
});
}
}
Adapter
继承的时候RecyclerView.Adapter<Adapter.MyViewHolder>(适配器的名.下面创建的相当于ViewHolder)RecyclerView.Adapter<Adapter.MyViewHolder>
//绑定 布局
MyViewHolder myViewHolder = new MyViewHolder(view);
package com.example.zhoukao2.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.zhoukao2.R;
import com.example.zhoukao2.bean.ddd;
import org.w3c.dom.Text;
import java.util.List;
public class Adapter extends RecyclerView.Adapter<Adapter.MyViewHolder> {
private Context context;
private List<ddd.ResultBean.MlssBean.CommodityListBeanXX> list;
public Adapter(Context context, List<ddd.ResultBean.MlssBean.CommodityListBeanXX> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=LayoutInflater.from(context).inflate(R.layout.item_layout,null,false);
//绑定 布局
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
//找控件
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
myViewHolder.textView.setText(list.get(i).getCommodityName());
Glide.with(context).load(list.get(i).getMasterPic()).into(myViewHolder.imageView);
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
private final ImageView imageView;
private final TextView textView;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.img_view);
textView = itemView.findViewById(R.id.txt_title);
}
}
}