MVP展示数据

首先我们创建一个最大的接口Contrat然后创建MVP框架让类实现Contract方法
//Contract
public interface Kfc_Contract {
//View层
public interface Kfc_View {

    public void KfcView(String message);
}

//Persenter
public interface Kfc_Persenter<Kfc_View> {
    public void attathView(Kfc_View kfc_view);

    public void daetchView(Kfc_View kfc_view);

    //请求数据
    public void requestData();
}

//M层
public interface Kfc_Model {
    public void getkfcData(Callback_kfc callback_kfc);

    //接口回调
    public interface Callback_kfc {

        public void Response(String message);
    }
}

}
接下来我们现在View层实现方法
创建P层
kfcPersenter = new KfcPersenter();
//绑定
kfcPersenter.attathView(this);
kfcPersenter.requestData();
@Override
public void KfcView(final String message) {
runOnUiThread(new Runnable() {
//V层方法
private OneAdapter oneAdapter;
private List<KFCBean.DataBean> data;
@Override
public void run() {
int i = 0;
Gson gson = new Gson();
KFCBean kfcBean = gson.fromJson(message, KFCBean.class);
data = kfcBean.getData();
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
rlv.setLayoutManager(linearLayoutManager);
oneAdapter = new OneAdapter(data, MainActivity.this);
rlv.setAdapter(oneAdapter);
//选中
che.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
/* //总价
double totalCount=0;*/
for (int i = 0; i < data.size(); i++) {
//一级商家全部选中
data.get(i).setCheckbox(isChecked);

                        //二级数据选中
                        for (int j = 0; j < data.get(i).getSpus().size(); j++) {
                            data.get(i).getSpus().get(j).setCheckbox(isChecked);
          /*  if (isChecked==false)
            {
            }*/
                        }
                    }
                    oneAdapter.notifyDataSetChanged();
                }
            });
        }
    });
}

接下来我们在P层去做一些内存泄漏和数据的传值以及回调
@Override
//做一个内存泄漏
public void attathView(Kfc_Contract.Kfc_View kfc_view) {
this.kfc_view = kfc_view;
//实例化M层
kfcModel = new KfcModel();
//内存泄漏
softReference = new SoftReference<>(kfcModel);
}
//解绑
@Override
public void daetchView(Kfc_Contract.Kfc_View kfc_view) {
//清理内存
softReference.clear();
}
//调用M层请求数据然后再传给V层展示
@Override
public void requestData() {
kfcModel.getkfcData(new Kfc_Contract.Kfc_Model.Callback_kfc() {
@Override
public void Response(String message) {
kfc_view.KfcView(message);
}
});
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值