展示数据RecelyView

需要导入的依赖

    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);
    }
}

}

猜你喜欢

转载自blog.csdn.net/zhe_guan/article/details/88626123