RecycleView嵌套

效果视图

在这里插入图片描述

1.写协议Contract

public interface IShoppingContract {
public interface IShoppingView{
    public void showData(String json);
    public void showGoodsData(String json);
}
public interface IShoppingPresenter<IShoppingView>{
    public void attachView(IShoppingView iShoppingView);
    public void detachView(IShoppingView iShoppingView);
    public void requestData();
    public void requestID(int cid);
}
public interface IShoppingModel{
    public void constaintRequentData(MyCallBack myCallBack);
    public void constaintRequestGoodsData(int cid, MyCallBack myCallBack);
    public interface MyCallBack{
        public void responseData(String json);
    }
}

}
2.V层

 public class HomeActivity extends AppCompatActivity implements IShoppingContract.IShoppingView {

@BindView(R.id.list_redydle)
RecyclerView listRedydle;
@BindView(R.id.commodity_redydle)
RecyclerView commodityRedydle;
private IShoppingContract.IShoppingPresenter shoppingPresenter;
private BussinessAdapter bussinessAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    ButterKnife.bind(this);
    shoppingPresenter = new ShoppingPresenter();
    shoppingPresenter.attachView(this);
    shoppingPresenter.requestData();
}

@Override
public void showData(String s) {
    Gson gson = new Gson();
    ListBean listBean = gson.fromJson(s, ListBean.class);
    final List<ListBean.DataBean> data = listBean.getData();
    bussinessAdapter = new BussinessAdapter(R.layout.list_recycle_layout, data);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(HomeActivity.this, LinearLayoutManager.VERTICAL, false);
    listRedydle.setLayoutManager(linearLayoutManager);
    listRedydle.setAdapter(bussinessAdapter);
    bussinessAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
            int cid = data.get(position).getCid();
            Toast.makeText(HomeActivity.this, "cid:" + cid, Toast.LENGTH_SHORT).show();
            shoppingPresenter.requestID(cid);
        }
    });

}

@Override
public void showGoodsData(String json) {
  // Toast.makeText(this, json, Toast.LENGTH_SHORT).show();
         Gson gson = new Gson();
    GoodsBean goodsBean = gson.fromJson(json, GoodsBean.class);
    List<GoodsBean.DataBean> data = goodsBean.getData();
    CommodityAdapter commodityAdapter = new CommodityAdapter(R.layout.commodity_recycle_layout,data);
    LinearLayoutManager linearLayoutManager1 = new LinearLayoutManager(HomeActivity.this, LinearLayoutManager.VERTICAL, false);
    commodityRedydle.setLayoutManager(linearLayoutManager1);
    commodityRedydle.setAdapter(commodityAdapter);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    shoppingPresenter.detachView(this);
}

}
3.P层

public class ShoppingPresenter implements IShoppingContract.IShoppingPresenter<IShoppingContract.IShoppingView> {
IShoppingContract.IShoppingView iShoppingView;
private IShoppingContract.IShoppingModel shoppingModel;
private SoftReference<IShoppingContract.IShoppingView> reference;

@Override
public void attachView(IShoppingContract.IShoppingView iShoppingView) {
    this.iShoppingView=iShoppingView;
    shoppingModel = new ShoppingModel();
    reference = new SoftReference<>(iShoppingView);
}

@Override
public void detachView(IShoppingContract.IShoppingView iShoppingView) {
    reference.clear();
}

@Override
public void requestData() {
    shoppingModel.constaintRequentData(new IShoppingContract.IShoppingModel.MyCallBack() {
        @Override
        public void responseData(String s) {
            iShoppingView.showData(s);
        }
    });
}

@Override
public void requestID(int cid) {
    shoppingModel.constaintRequestGoodsData(cid,new IShoppingContract.IShoppingModel.MyCallBack() {
        @Override
        public void responseData(String json) {
            iShoppingView.showGoodsData(json);
        }
    });
}}

4.M层

public class ShoppingModel implements IShoppingContract.IShoppingModel {
@Override
public void constaintRequentData(final MyCallBack myCallBack) {

    OkGo.<String>get(Constant.SHOPPING_URL).execute(new StringCallback() {
        @Override
        public void onSuccess(Response<String> response) {
            String s = response.body().toString();
            myCallBack.responseData(s);
        }
    });
}

@Override
public void constaintRequestGoodsData(int cid, final MyCallBack myCallBack) {
    String url=Constant.GOODS_URL+"?cid="+cid;
    OkGo.<String>get(url).execute(new StringCallback() {
        @Override
        public void onSuccess(Response<String> response) {
            String json = response.body().toString();
            Log.d("ShoppingModel", json);
            myCallBack.responseData(json);
        }
    });
}}

5.适配器
(1).左侧RecycleView

public class BussinessAdapter extends BaseQuickAdapter<ListBean.DataBean,BaseViewHolder> {
public BussinessAdapter(int layoutResId, @Nullable List<ListBean.DataBean> data) {
    super(layoutResId, data);
}

@Override
protected void convert(BaseViewHolder helper, ListBean.DataBean item) {
    helper.setText(R.id.text_list,item.getName());
}

(2)右侧RecycleView

public class CommodityAdapter extends BaseQuickAdapter<GoodsBean.DataBean,BaseViewHolder> {
public CommodityAdapter(int layoutResId, @Nullable List<GoodsBean.DataBean> data) {
    super(layoutResId, data);
}

@Override
protected void convert(BaseViewHolder helper, GoodsBean.DataBean item) {
    helper.setText(R.id.text_commodity_list,item.getName());
    RecyclerView child_commodity_recycle = helper.getView(R.id.child_commodity_recycle);
    GoodsAdapter goodsAdapter = new GoodsAdapter(R.layout.child_commodity_recycle, item.getList());
    GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 3, GridLayoutManager.HORIZONTAL, false);
    child_commodity_recycle.setLayoutManager(gridLayoutManager);
    child_commodity_recycle.setAdapter(goodsAdapter);
}}

(3).跟条目适配器

public class GoodsAdapter extends BaseQuickAdapter<GoodsBean.DataBean.ListBean,BaseViewHolder> {
public GoodsAdapter(int layoutResId, @Nullable List<GoodsBean.DataBean.ListBean> data) {
    super(layoutResId, data);
}

@Override
protected void convert(BaseViewHolder helper, GoodsBean.DataBean.ListBean item) {
    helper.setText(R.id.text_commodity_name,item.getName());
    Glide.with(mContext).load(item.getIcon()).into((ImageView) helper.getView(R.id.image_commodity));
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值