首先说一下请求到数据的view层页面详细代码
public class MainActivity extends AppCompatActivity implements MainView { @BindView(R.id.f_recyclerView) RecyclerView fRecyclerView; @BindView(R.id.f_checkbox) CheckBox fCheckbox; @BindView(R.id.qx_tv) TextView qxTv; @BindView(R.id.f_price) TextView fPrice; @BindView(R.id.refreshLayout) SmartRefreshLayout refreshLayout; Unbinder unbinder; @BindView(R.id.toShop_btn) Button toShopBtn; private CartAdapter adapter; private List<CartBean.DataBean> data; private MainPresenter mainPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); EventBus.getDefault().register(this); mainPresenter = new MainPresenter(); mainPresenter.attchView(this); mainPresenter.getCartDa(); } @Override public void Success(List<CartBean.DataBean> showCartsBean) { data=showCartsBean; fRecyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this)); adapter = new CartAdapter(R.layout.cart_item, showCartsBean); fRecyclerView.setAdapter(adapter); toShopBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //startActivity(new Intent(getActivity(), OrderActivity.class)); } }); fCheckbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (fCheckbox.isChecked()) { for (int i = 0; i < data.size(); i++) { data.get(i).setIschekbox(true); for (int i1 = 0; i1 < data.get(i).getList().size(); i1++) { data.get(i).getList().get(i1).setIscheckbox(true); } } } else { for (int i = 0; i < data.size(); i++) { data.get(i).setIschekbox(false); for (int i1 = 0; i1 < data.get(i).getList().size(); i1++) { data.get(i).getList().get(i1).setIscheckbox(false); } } } /* */ totalPrice(); adapter.notifyDataSetChanged(); } }); } @Subscribe(threadMode = ThreadMode.MAIN) public void shub(String mas) { adapter.notifyDataSetChanged(); totalPrice(); } @Subscribe(threadMode = ThreadMode.MAIN) public void shub2(String mas1) { adapter.notifyDataSetChanged(); totalPrice(); } @Subscribe(threadMode = ThreadMode.MAIN) public void shua(String ma) { adapter.notifyDataSetChanged(); StringBuilder stringBuilder = new StringBuilder(); if (adapter != null) { for (int i = 0; i < adapter.getBean().size(); i++) { stringBuilder.append(adapter.getBean().get(i).getIschekbox()); for (int i1 = 0; i1 < adapter.getBean().get(i).getList().size(); i1++) { stringBuilder.append(adapter.getBean().get(i).getList().get(i1).isIscheckbox()); } } } if (stringBuilder.toString().contains("false")) { fCheckbox.setChecked(false); } else { fCheckbox.setChecked(true); } totalPrice(); } @Override protected void onDestroy() { super.onDestroy(); mainPresenter.destorView(); EventBus.getDefault().unregister(this); } private void totalPrice() { double totalprice = 0; /*循环嵌套*/ for (int i = 0; i < adapter.getBean().size(); i++) { for (int i1 = 0; i1 < adapter.getBean().get(i).getList().size(); i1++) { if (adapter.getBean().get(i).getList().get(i1).isIscheckbox()) { CartBean.DataBean.ListBean listBean = adapter.getBean().get(i).getList().get(i1); totalprice += listBean.getTotalNum() * listBean.getBargainPrice(); } } } fPrice.setText("合计:¥" + totalprice); } }写完主要代码后,再来写大adapter页面
public class CartAdapter extends BaseQuickAdapter<CartBean.DataBean,BaseViewHolder> { private Context mcontext; private List<CartBean.DataBean> bean; private int a= -1; public List<CartBean.DataBean> getBean() { return bean; } public CartAdapter(int layoutResId, @Nullable List<CartBean.DataBean> data) { super(layoutResId, data); EventBus.getDefault().register(this); bean= data; } @Subscribe(threadMode = ThreadMode.MAIN) public void shua(String ma) { notifyDataSetChanged(); } @Override protected void convert(BaseViewHolder helper, CartBean.DataBean item) { final int positions = helper.getLayoutPosition(); final CartBean.DataBean list = this.bean.get(positions); /* */ helper.setChecked(R.id.z_box, list.getIschekbox()); helper.setText(R.id.z_text, list.getSellerName()); /* */ RecyclerView z_recyclerview = helper.getView(R.id.z_recyclerview); final CheckBox z_box = helper.getView(R.id.z_box); /* 适配器 */ z_recyclerview.setLayoutManager(new LinearLayoutManager(mcontext)); final CartItemAdapter cartItemAdapter = new CartItemAdapter(R.layout.cart_item_layout, list.getList()); z_recyclerview.setAdapter(cartItemAdapter); /* 判断 商家的checkbox 应不应该选中*/ for (int i = 0; i < list.getList().size(); i++) { if (!list.getList().get(i).isIscheckbox()) { helper.setChecked(R.id.z_box, false); break; } else { helper.setChecked(R.id.z_box, true); } } /* * 商家点击全选 反选 * */ z_box.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (z_box.isChecked()) { list.setIschekbox(true); for (int i = 0; i < list.getList().size(); i++) { list.getList().get(i).setIscheckbox(true); } } else { list.setIschekbox(false); for (int i = 0; i < list.getList().size(); i++) { list.getList().get(i).setIscheckbox(false); } } // notifyDataSetChanged(); notifyItemChanged(positions); String mas =""; EventBus.getDefault().post(mas); } }); //点击加减 cartItemAdapter.setOnItemChildClickListener(new OnItemChildClickListener() { @Override public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { /*每次点击都赋值 确保数据准确*/ int num = list.getList().get(position).getNum(); switch (view.getId()) { case R.id.zu_btn_del: if (num == 1) { return; } else { num--; list.getList().get(position).setTotalNum(num); /*我们页面展示的num*/ list.getList().get(position).setNum(num); } notifyItemChanged(positions); // notifydata(); String mas =""; EventBus.getDefault().post(mas); break; case R.id.zu_btn_add: num++; list.getList().get(position).setTotalNum(num); list.getList().get(position).setNum(num); // notifydata(); notifyItemChanged(positions); String mas1 =""; EventBus.getDefault().post(mas1); break; } } }); } }布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:padding="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <CheckBox android:id="@+id/up_cb" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <ImageView android:src="@mipmap/ic_launcher" android:id="@+id/show2_ima" android:layout_width="80dp" android:layout_height="80dp"/> </LinearLayout> <LinearLayout android:layout_marginLeft="10dp" android:layout_width="match_parent" android:layout_gravity="center" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/show2_text" android:text="商品标题" android:layout_width="match_parent" android:layout_height="wrap_content"/> <RelativeLayout android:layout_marginTop="15dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/show_price" android:layout_alignParentLeft="true" android:text="优惠价:¥99.99" android:textColor="@android:color/holo_red_light" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <include layout="@layout/btnzu" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> </LinearLayout> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1px" android:background="#999999"/> </LinearLayout>子页面
public class CartItemAdapter extends BaseQuickAdapter<CartBean.DataBean.ListBean,BaseViewHolder> { private List<CartBean.DataBean.ListBean> bean; public CartItemAdapter(int layoutResId, @Nullable List<CartBean.DataBean.ListBean> data) { super(layoutResId, data); bean= data; } @Override protected void convert(BaseViewHolder helper, CartBean.DataBean.ListBean item) { item.setTotalNum(item.getNum()); /* 获取新的实体类 防止刷新 回到以前*/ int position = helper.getLayoutPosition(); final CartBean.DataBean.ListBean listBean = bean.get(position); //赋值 helper.setText(R.id.show_price,"优惠价:¥"+item.getBargainPrice()); helper.setText(R.id.zu_ed,item.getNum()+""); helper.setText(R.id.show2_text,listBean.getTitle()); helper.setChecked(R.id.up_cb,listBean.isIscheckbox()); String[] split = item.getImages().split("\\|"); Glide.with(mContext).load(split[0]).crossFade().into((ImageView) helper.getView(R.id.show2_ima)); /*获取控件*/ final CheckBox up_cb = helper.getView(R.id.up_cb); /* include引用 点击事件*/ helper.setText(R.id.zu_btn_del,"-").addOnClickListener(R.id.zu_btn_del); helper.setText(R.id.zu_btn_add,"+").addOnClickListener(R.id.zu_btn_add); up_cb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (up_cb.isChecked()){ listBean.setIscheckbox(true); }else { listBean.setIscheckbox(false); } //局部刷新 notifyDataSetChanged(); /*通知父类刷新*/ /* if (cartCheckListener!=null){ cartCheckListener.notifyParent();}*/ String ma =""; EventBus.getDefault().post(ma); } }); } }布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <CheckBox android:id="@+id/z_box" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" /> <TextView android:layout_marginTop="10dp" android:layout_marginLeft="30dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/z_text" android:text="asdfas" /> </LinearLayout> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/z_recyclerview" > </android.support.v7.widget.RecyclerView> </LinearLayout>背景
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <size android:width="20dp" android:height="10dp"/> <solid android:color="#f00"/> <corners android:radius="19dp"/> </shape>btnzu
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="40dp" android:orientation="horizontal" > <Button android:layout_width="40dp" android:layout_height="40dp" android:id="@+id/zu_btn_del" android:background="#00000000" android:text="-" android:layout_gravity="center_vertical" /> <EditText android:layout_gravity="center_vertical" android:gravity="center" android:id="@+id/zu_ed" android:layout_width="30dp" android:layout_height="20dp" android:background="#A8A8A8" /> <Button android:layout_gravity="center_vertical" android:id="@+id/zu_btn_add" android:layout_width="40dp" android:background="#00000000" android:layout_height="40dp" android:text="+" /> </LinearLayout>
