效果视图
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));
}
}