首先做 商家被点击 当前商品被全选中
//有一个这样的接口回调给外部访问
OnCartListChangeListener onCartListChangeListener;
public void setOnCartListChangeListener(OnCartListChangeListener onCartListChangeListener) {
this.onCartListChangeListener = onCartListChangeListener;
}
public interface OnCartListChangeListener{
void OnGoodsClicked(int groupPosition,int childPosition);
void OnAddSubtractIsClicked(int groupPosition,int childPosition,int number);
void OnMerchantClick(int groupPosition);
}
//判断复选框是否被选中
public boolean WhetherMerchantSelected(int groupPosition){
List<UserBaen.DataBean.ListBean> list = data.get(groupPosition).getList();
for (UserBaen.DataBean.ListBean listBean:list){
if (listBean.getSelected()==0){
return false;
}
}
return true;
}
//如果商家被点击商品改变状态
public void OnChangeMerchantStatusCheckboxGoodsCheckboxIsSelected(int groupPosition,boolean isChecked){
UserBaen.DataBean dataBean = data.get(groupPosition);
List<UserBaen.DataBean.ListBean> list = dataBean.getList();
for (int i = 0; i <list.size() ; i++) {
list.get(i).setSelected(isChecked?1:0);
}
}
//改变商品的状态
public void changeCurrentProdictStatus(int groupPosition, int childPosition) {
List<UserBaen.DataBean.ListBean> list = data.get(groupPosition).getList();
UserBaen.DataBean.ListBean listBean = list.get(childPosition);
listBean.setSelected(listBean.getSelected() == 0 ? 1 : 0);
}
在子条目viewhoder中
chiViewHolder.childCb.setChecked(listBean.getSelected()==1);
chiViewHolder.childCb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onCartListChangeListener!=null){
onCartListChangeListener.OnGoodsClicked(groupPosition,childPosition);
}
}
});
//在主条目中设置
boolean b = WhetherMerchantSelected(groupPosition);
groupViewHolder.checkedGroup.setChecked(b);
groupViewHolder.checkedGroup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onCartListChangeListener!=null){
onCartListChangeListener.OnMerchantClick(groupPosition);
}
}
});
//activity的页面 这样的一个商家的联动就好了
myAdapterExpanblelistView.setOnCartListChangeListener(new MyAdapterExpanblelistView.OnCartListChangeListener() {
@Override
public void OnGoodsClicked(int groupPosition, int childPosition) {
myAdapterExpanblelistView.changeCurrentProdictStatus(groupPosition,childPosition);
myAdapterExpanblelistView.notifyDataSetChanged();
}
@Override
public void OnAddSubtractIsClicked(int groupPosition, int childPosition, int number) {
}
@Override
public void OnMerchantClick(int groupPosition) {
boolean b = myAdapterExpanblelistView.WhetherMerchantSelected(groupPosition);
myAdapterExpanblelistView.OnChangeMerchantStatusCheckboxGoodsCheckboxIsSelected(groupPosition,!b);
myAdapterExpanblelistView.notifyDataSetChanged();
}
});
本文介绍了一种购物车中商品及商家选择状态同步更新的实现机制,通过定义监听器接口来响应商品点击、数量增减及商家点击事件,并详细展示了如何通过复选框状态维护商品和商家的选择状态。

被折叠的 条评论
为什么被折叠?



