RecyclerView嵌套二级链表

标题 RecyclerView适配器逻辑

public class MyBigAdapter extends RecyclerView.Adapter<MyBigAdapter.Holder> {

private Context mContext;
private List<MyData.ResultBean> mList;

public MyBigAdapter(Context mContext, List<MyData.ResultBean> mList) {
    this.mContext = mContext;
    this.mList = mList;
}

@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.recy_big, null);
    Holder holder = new Holder(view);
    return holder;
}

@Override
public void onBindViewHolder(@NonNull Holder holder, final int i) {
    holder.mBigTv.setText(mList.get(i).getCategoryName() + "");
    SmallAdapter adapter = new SmallAdapter(mList.get(i).getShoppingCartList(), i);
    holder.mSamllRecy.setAdapter(adapter);
    holder.mBigCheck.setChecked(setBigCheck(i));
    holder.mBigCheck.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (callback != null) {
                callback.bigCheckClick(i);
            }
        }
    });
}

@Override
public int getItemCount() {
    return mList.size();
}

public class Holder extends RecyclerView.ViewHolder {
    private CheckBox mBigCheck;
    private TextView mBigTv;
    private RecyclerView mSamllRecy;

    public Holder(@NonNull View itemView) {
        super(itemView);
        mBigCheck = itemView.findViewById(R.id.Big_CheckBox);
        mBigTv = itemView.findViewById(R.id.Big_Text);
        mSamllRecy = itemView.findViewById(R.id.small_Recy);
        mSamllRecy.setLayoutManager(new LinearLayoutManager(mContext));
    }
}

//具体商品的适配器


class SmallAdapter extends RecyclerView.Adapter<SmallAdapter.SamllHolder> {
    private List<MyData.ResultBean.ShoppingCartListBean> mList;
    private int bigIndex;

    public SmallAdapter(List<MyData.ResultBean.ShoppingCartListBean> list, int bigIndex) {
        this.mList = list;
        this.bigIndex = bigIndex;
    }

    @NonNull
    @Override
    public SamllHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(mContext, R.layout.recy_samll, null);
        SamllHolder holder = new SamllHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull SamllHolder samllHolder, final int i) {
        samllHolder.mPrice.setText(mList.get(i).getPrice() + "");
        Glide.with(mContext).load(mList.get(i).getPic()).into(samllHolder.mImage);
        samllHolder.mSmallName.setText(mList.get(i).getCommodityName() + "");
        samllHolder.myAddOrRemoveView.setNumber(mList.get(i).getCount());
        samllHolder.mSmallCheck.setChecked(mList.get(i).isStatus());
        samllHolder.mSmallCheck.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (callback != null) {
                    callback.smallCheckClick(bigIndex, i);
                }
            }
        });
        samllHolder.myAddOrRemoveView.setItemCount(new MyAddOrRemoveView.ItemCount() {
            @Override
            public void setItemCount(int number) {
               if (callback!=null){
                   callback.smallCheckClickCount(bigIndex,i,number);
               }
            }
        });
    }

    @Override
    public int getItemCount() {
        return mList.size();
    }

    public class SamllHolder extends RecyclerView.ViewHolder {
        private CheckBox mSmallCheck;
        private TextView mSmallName, mPrice;
        private ImageView mImage;
        private MyAddOrRemoveView myAddOrRemoveView;

        public SamllHolder(@NonNull View itemView) {
            super(itemView);
            mSmallCheck = itemView.findViewById(R.id.small_Check);
            mSmallName = itemView.findViewById(R.id.small_Name);
            mPrice = itemView.findViewById(R.id.small_Price);
            mImage = itemView.findViewById(R.id.samll_Image);
            myAddOrRemoveView = itemView.findViewById(R.id.AddOrRemove);
        }
    }
}

public interface ShoppingCallback {
    void bigCheckClick(int bigIndex);

    void smallCheckClick(int bigIndex, int smallIndex);

    void smallCheckClickCount(int bigIndex, int smallIndex, int number);
}

private ShoppingCallback callback;

public void setCallback(ShoppingCallback callback) {
    this.callback = callback;
}

//接下来就是业务逻辑方法的时候了
//判断商家是否要选中
public boolean setBigCheck(int bigIndex) {
    boolean flag = true;
    MyData.ResultBean resultBean = mList.get(bigIndex);
    for (int i = 0; i < resultBean.getShoppingCartList().size(); i++) {
        if (!resultBean.getShoppingCartList().get(i).isStatus()) {
            flag = false;
            return flag;
        }
    }
    return flag;
}

//当我点击商家的复选框的时候
public void setBigCheckStatus(int bigIndex, boolean isStatus) {
    List<MyData.ResultBean.ShoppingCartListBean> cartList = mList.get(bigIndex).getShoppingCartList();
    for (MyData.ResultBean.ShoppingCartListBean cardBean : cartList) {
        cardBean.setStatus(isStatus);
    }
}

//当我点击商品让他选中
public void setSmallCheck(int bigIndex, int smallIndex, boolean isCheck) {
    mList.get(bigIndex).getShoppingCartList().get(smallIndex).setStatus(isCheck);
}

//当我点击Activity中的全选按钮式
public boolean isAllChecked() {
    boolean isAllchecked = true;
    for (int i = 0; i < mList.size(); i++) {
        List<MyData.ResultBean.ShoppingCartListBean> shoppingCartList = mList.get(i).getShoppingCartList();
        for (int j = 0; j < shoppingCartList.size(); j++) {
            if (!shoppingCartList.get(j).isStatus()) {
                isAllchecked = false;
                return isAllchecked;
            }
        }
    }
    return isAllchecked;
}

public void setAllChecked(boolean isCheck) {
    for (int i = 0; i < mList.size(); i++) {
        List<MyData.ResultBean.ShoppingCartListBean> shoppingCartList = mList.get(i).getShoppingCartList();
        for (int j = 0; j < shoppingCartList.size(); j++) {
            shoppingCartList.get(j).setStatus(isCheck);
        }
    }
}

//计算总价格
public int allPrice() {
    int allprice = 0;
    for (int i = 0; i < mList.size(); i++) {
        List<MyData.ResultBean.ShoppingCartListBean> shoppingCartList = mList.get(i).getShoppingCartList();
        for (int j = 0; j < shoppingCartList.size(); j++) {
            if (shoppingCartList.get(j).isStatus()) {
                allprice += shoppingCartList.get(j).getPrice() * shoppingCartList.get(j).getCount();
            }
        }
    }
    return allprice;
}

//计算总数量
public int allNumber() {
    int count = 0;
    for (int i = 0; i < mList.size(); i++) {
        List<MyData.ResultBean.ShoppingCartListBean> shoppingCartList = mList.get(i).getShoppingCartList();
        for (int j = 0; j < shoppingCartList.size(); j++) {
            if (shoppingCartList.get(j).isStatus()) {
                count += shoppingCartList.get(j).getCount();
            }
        }
    }
    return count;
}

}

Activity中引用

package soexample.umeng.com.day07_shopping_car_demo;

import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import butterknife.BindView;
import soexample.umeng.com.day07_shopping_car_demo.adapter.MyBigAdapter;
import soexample.umeng.com.day07_shopping_car_demo.base.BaseActivity;
import soexample.umeng.com.day07_shopping_car_demo.base.BasePresenter;
import soexample.umeng.com.day07_shopping_car_demo.bean.MyData;
import soexample.umeng.com.day07_shopping_car_demo.presenter.PresenterImpl;
import soexample.umeng.com.day07_shopping_car_demo.url.MyUrls;

public class MainActivity extends BaseActivity {

@BindView(R.id.recy_View)
RecyclerView mRecy;
private List<MyData.ResultBean> mList = new ArrayList<>();
private MyBigAdapter mAdapter;
@BindView(R.id.All_check)
CheckBox All_check;
@BindView(R.id.All_Price)
TextView All_Price;
@BindView(R.id.All_Count)
TextView All_Count;

@Override
public BasePresenter getPresenter() {
    return new PresenterImpl();
}

@Override
public int getLayoutId() {
    return R.layout.activity_main;
}

@Override
public void initViews() {
    All_check.setOnClickListener(this);
    mRecy.setLayoutManager(new LinearLayoutManager(this));
}

@Override
public void startCoding() {
    mAdapter = new MyBigAdapter(this, mList);
    mRecy.setAdapter(mAdapter);
    Map<String, Object> map = new HashMap<>();
    map.put("userId", "10922");
    map.put("sessionId", "157559325456410922");
    mPresenter.startGetRequest(MyUrls.SHOPPINGCARD, MyData.class, map);
    mAdapter.setCallback(new MyBigAdapter.ShoppingCallback() {
        @Override
        public void bigCheckClick(int bigIndex) {
            boolean b = mAdapter.setBigCheck(bigIndex);
            mAdapter.setBigCheckStatus(bigIndex, !b);
            mAdapter.notifyDataSetChanged();
            allCalculation();
        }

        @Override
        public void smallCheckClick(int bigIndex, int smallIndex) {
            boolean status = mList.get(bigIndex).getShoppingCartList().get(smallIndex).isStatus();
            mAdapter.setSmallCheck(bigIndex, smallIndex, !status);
            mAdapter.notifyDataSetChanged();
            allCalculation();
        }

        @Override
        public void smallCheckClickCount(int bigIndex, int smallIndex, int number) {
            mList.get(bigIndex).getShoppingCartList().get(smallIndex).setCount(number);
            mAdapter.notifyDataSetChanged();
            allCalculation();
        }
    });
}

@Override
public void onSuccess(Object o) {
    if (o instanceof MyData) {
        mList.addAll(((MyData) o).getResult());
        mAdapter.notifyDataSetChanged();
    }
}

@Override
public void onError(String error) {

}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.All_check:
            boolean allChecked = mAdapter.isAllChecked();
            mAdapter.setAllChecked(!allChecked);
            All_check.setChecked(!allChecked);
            mAdapter.notifyDataSetChanged();
            All_Count.setText("总数量:" + mAdapter.allNumber());
            All_Price.setText("总价格:" + mAdapter.allPrice());
            break;
    }


}

private void allCalculation() {
    boolean allChecked = mAdapter.isAllChecked();
    All_check.setChecked(allChecked);
    All_Count.setText("总数量:" + mAdapter.allNumber());
    All_Price.setText("总价格:" + mAdapter.allPrice());
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值