首先说一下请求到数据的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>