RecycleView嵌套RecycleView完成购物车

当子recycleView中的item全部选择的时候 也需要更新父recycleView的选择 在子adapter中使用nodifychanged刷新 就崩了
public class ShopCarAdapter extends RecyclerView.Adapter {
private Context mContext;
private List<ShopCarBean.DataBean.AllBean> mList;
private static final String TAG = "ShopCarAdapter";
public ShopCarAdapter(Context context) {
this.mContext = context;
}
public void setData(List<ShopCarBean.DataBean.AllBean> list) {
mList = new ArrayList<>();
this.mList = list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = null;
RecyclerView.ViewHolder holder = null;
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adp_shop_car_goods, parent, false);
holder = new TitleViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof TitleViewHolder) {
((TitleViewHolder) holder).tv_name.setText(mList.get(position).getTimeName());
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext, RecyclerView.VERTICAL, false);
((TitleViewHolder) holder).recyclerView_goods.setLayoutManager(linearLayoutManager);
ItemGoodAdapter itemGoodAdapter = new ItemGoodAdapter(mContext);
((TitleViewHolder) holder).recyclerView_goods.setAdapter(itemGoodAdapter);
itemGoodAdapter.setData(mList.get(position).getGoodsBeanList());
itemGoodAdapter.notifyDataSetChanged();
((TitleViewHolder) holder).ll_goods_choose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean goodsSelect = mList.get(position).isGoodsSelect();
goodsSelect = !goodsSelect;
mList.get(position).setGoodsSelect(goodsSelect);
setItemColor(goodsSelect, ((TitleViewHolder) holder).iv_goods_choose, mList.get(position).getGoodsBeanList());
itemGoodAdapter.notifyDataSetChanged();
}
});
}
}
/**
* 设置多个商品选中的颜色
*
* @param isColor
* @param iv_goods_choose
*/
private void setItemColor(boolean isColor, ImageView iv_goods_choose, List<ShopCarBean.DataBean.AllBean.GoodsBean> List) {
if (isColor) {
iv_goods_choose.setImageResource(R.mipmap.greenright);
if (List != null && List.size() != 0) {
for (int y = 0; y < List.size(); y++) {
List.get(y).setItemSelect(true);
}
}
} else {
iv_goods_choose.setImageResource(R.mipmap.table_gouwuche_onclick_no);
if (List != null && List.size() != 0) {
for (int y = 0; y < List.size(); y++) {
List.get(y).setItemSelect(false);
}
}
}
}
@Override
public int getItemCount() {
return mList == null ? 0 : mList.size();
}
class TitleViewHolder extends RecyclerView.ViewHolder {
private RecyclerView recyclerView_goods;
private TextView tv_name;
private LinearLayout ll_goods_choose;
private ImageView iv_goods_choose;
public TitleViewHolder(View itemView) {
super(itemView);
tv_name = itemView.findViewById(R.id.tv_shop_car_name);
recyclerView_goods = itemView.findViewById(R.id.recyclerView_goods);
ll_goods_choose = itemView.findViewById(R.id.ll_goods_choose);
iv_goods_choose = itemView.findViewById(R.id.iv_goods_choose);
}
}
/**
* 单个商品的值
*/
class ItemGoodAdapter extends RecyclerView.Adapter {
private List<ShopCarBean.DataBean.AllBean.GoodsBean> iList = new ArrayList<>();
private Context context;
public ItemGoodAdapter(Context context) {
this.context = context;
}
public void setData(List<ShopCarBean.DataBean.AllBean.GoodsBean> List) {
this.iList = List;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = null;
RecyclerView.ViewHolder holder = null;
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adp_shop_car_content, parent, false);
holder = new ItemViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (holder instanceof ItemViewHolder) {
((ItemViewHolder) holder).tv_introduce.setText(iList.get(position).getGoods_name());
Glide.with(mContext).load(iList.get(position).getGoods_image())
.into(((ItemViewHolder) holder).iv_picture);
((ItemViewHolder) holder).tv_price.setText(iList.get(position).getGoods_price());
((ItemViewHolder) holder).tv_number.setText(iList.get(position).getGoods_num());
boolean itemSelect = iList.get(position).isItemSelect();
setItemColor(itemSelect, ((ItemViewHolder) holder).iv_item_choose);
((ItemViewHolder) holder).ll_item_choose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean itemSelect = iList.get(position).isItemSelect();
itemSelect = !itemSelect;
iList.get(position).setItemSelect(itemSelect);
setItemColor(itemSelect, ((ItemViewHolder) holder).iv_item_choose);
}
});
}
}
@Override
public int getItemCount() {
return iList == null ? 0 : iList.size();
}
/**
* 设置单个商品选中的颜色
*
* @param isColor
* @param iv_item_choose
*/
private void setItemColor(boolean isColor, ImageView iv_item_choose) {
if (isColor) {
iv_item_choose.setImageResource(R.mipmap.greenright);
if (bianliAll()) { //如果全部都选中了的话
for (int i = 0; i < mList.size(); i++) {
for (int y = 0; y < iList.size(); y++) {
if (mList.get(i).getTimeName().equals(iList.get(y).getShop_name())) {
Log.d(TAG, "mList.get(i).getTimeName() = " + mList.get(i).getTimeName() + ",iList.get(y).getShop_name() =" + iList.get(y).getShop_name());
mList.get(i).setGoodsSelect(true);
notifyDataSetChanged();
break;
}
}
}
}
} else {
iv_item_choose.setImageResource(R.mipmap.table_gouwuche_onclick_no);
if (!bianliAll()) { //如果有一个没选中的话
for (int i = 0; i < mList.size(); i++) {
for (int y = 0; y < iList.size(); y++) {
if (mList.get(i).getTimeName().equals(iList.get(y).getShop_name())) {
mList.get(i).setGoodsSelect(false);
notifyDataSetChanged();
break;
}
}
}
}
}
}
/**
* 遍历子list中的所有商品 如果都为true,就表示全部都选中了
*
* @return
*/
private boolean bianliAll() {
if (iList != null && iList.size() != 0) {
for (int i = 0; i < iList.size(); i++) {
if (!iList.get(i).isItemSelect()) {
return false;
}
}
}
return true;
}
class ItemViewHolder extends RecyclerView.ViewHolder {
private TextView tv_introduce;
private TextView tv_price;
private ImageView iv_picture;
private TextView tv_number;
private LinearLayout ll_item_choose;
private ImageView iv_item_choose;
public ItemViewHolder(View itemView) {
super(itemView);
tv_introduce = itemView.findViewById(R.id.tv_shop_car_introduce);
tv_price = itemView.findViewById(R.id.tv_shop_car_price);
iv_picture = itemView.findViewById(R.id.iv_picture);
tv_number = itemView.findViewById(R.id.tv_number);
ll_item_choose = itemView.findViewById(R.id.ll_item_choose);
iv_item_choose = itemView.findViewById(R.id.iv_item_choose);
}
}
}
}
z在设置单个商品选择的颜色的方法中使用 notifyDataSetChanged();给崩了 网上说是锁定了 那么是不是要换listView嵌套ListView来做呢
您的每一个用心回答,都会让这个世界变得更美好一些!