购物车2

1.二级列表购物车适配器
public class ShopCartAdapter extends BaseExpandableListAdapter {
Context context;
List<ShopcartBean.DataBean> list;
CheckBox checkAll;
TextView priceAll;
private Group_ViewHolder holder;
private Child_ViewHolder holder1;
private int summ=0;
private boolean checked_childPosition;
private int praise_num;
private int praise_num1;
private int checked_groupPosition;
private boolean group_checkBox_status;
private boolean checkAll_status;
public ShopCartAdapter(Context context, final List<ShopcartBean.DataBean> list, CheckBox checkAll, final TextView priceAll) {
this.context = context;
this.list = list;
this.checkAll = checkAll;
this.priceAll = priceAll;
//给全选的checkBox写点击事件
checkAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkAll_checkBox = (CheckBox) v;
//得到全选的checkBox的状态
checkAll_status = checkAll_checkBox.isChecked();
//把全选的checkBox的状态设置给每个商家和每个商品
for (int i = 0; i < list.size(); i++) {
list.get(i).setChecked(checkAll_status);
for (int j = 0; j < list.get(i).getList().size(); j++) {
list.get(i).getList().get(j).setChecked(checkAll_status);
}
}
notifyDataSetChanged();
//如果全选checkBox被选中 计算总价
if (checkAll_status){
summ=0;
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.get(i).getList().size(); j++) {
double price2 = list.get(i).getList().get(j).getPrice();
int num2 = list.get(i).getList().get(j).getNum();
summ+=num2price2;
}
}
}
else {
summ=0;
}
priceAll.setText(“¥”+summ );
notifyDataSetChanged();
}
});
}
@Override
public int getGroupCount() {
return list.size();
}
@Override
public int getChildrenCount(int groupPosition) {
return list.get(groupPosition).getList().size();
}
//-----------------------------不用管以下的五个方法---------------------------------------
@Override
public Object getGroup(int groupPosition) {
return null;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return null;
}
@Override
public long getGroupId(int groupPosition) {
return 0;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
//------------------------------------------------------------------------------------------
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView==null){
convertView = LayoutInflater.from(context).inflate(R.layout.group, null);
holder = new Group_ViewHolder();
holder.group_name=convertView.findViewById(R.id.group_name);
holder.group_checkbox=convertView.findViewById(R.id.group_checkbox);
convertView.setTag(holder);
}
else {
holder= (Group_ViewHolder) convertView.getTag();
}
holder.group_name.setText(list.get(groupPosition).getSellerName());
//给商家的checkbox设置默认状态(默认状态就是指商家的状态)
holder.group_checkbox.setChecked(list.get(groupPosition).isChecked());
//存下标
holder.group_checkbox.setTag(groupPosition);
//给商家的checkbox写点击事件
holder.group_checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取之前存的下标
String s = v.getTag().toString();
//强制转换成Integer类型
checked_groupPosition = Integer.parseInt(s);
CheckBox group_checkBox= (CheckBox) v;
//获取商家的checkbox的状态
group_checkBox_status = group_checkBox.isChecked();
//把商家的checkbox状态设置成商家的状态
list.get(checked_groupPosition).setChecked(group_checkBox_status);
//通过商家的状态改变商家内每个商品的状态
for (int i = 0; i < list.get(checked_groupPosition).getList().size(); i++) {
list.get(checked_groupPosition).getList().get(i).setChecked(list.get(checked_groupPosition).isChecked());
}
notifyDataSetChanged();
//判断所有的商家是否全被选中
boolean selectAllGroup = isSelectAllGroup();
//通过所有商家的状态来判断是否选中全选的checkbox
checkAll.setChecked(selectAllGroup);
//如果商家选中 计算商家内所有商品的价格
if (group_checkBox_status){
for (int j = 0; j <list.get(checked_groupPosition).getList().size() ; j++) {
int num2 = list.get(checked_groupPosition).getList().get(j).getNum();
for (int i = 0; i < list.get(checked_groupPosition).getList().size(); i++) {
double price = list.get(checked_groupPosition).getList().get(j).getPrice();
summ+=num2
price;
}
}
priceAll.setText(summ +"");
notifyDataSetChanged();
}else {
//如果商家取消选中 重新计算商家内所有商品的价格
for (int j = 0; j <list.get(checked_groupPosition).getList().size(); j++) {
for (int i = 0; i < list.get(checked_groupPosition).getList().size(); i++) {
double price = list.get(checked_groupPosition).getList().get(i).getPrice();
int num2 = list.get(checked_groupPosition).getList().get(i).getNum();
summ-=num2price;
}
priceAll.setText(summ +"");
notifyDataSetChanged();
}
}
}
});
return convertView;
}
//判断所有的商家是否被选中
private boolean isSelectAllGroup(){
for (int i = 0; i <list.size(); i++) {
boolean checked = list.get(i).isChecked();
if (!checked) {
return false;
}
}
return true;
}
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, final ViewGroup parent) {
if (convertView==null){
convertView = LayoutInflater.from(context).inflate(R.layout.child, null);
holder1 = new Child_ViewHolder();
holder1.child_name=convertView.findViewById(R.id.child_name);
holder1.simple=convertView.findViewById(R.id.simple);
holder1.child_checkbox=convertView.findViewById(R.id.child_checkbox);
holder1.child_jia=convertView.findViewById(R.id.child_jia);
holder1.child_jian=convertView.findViewById(R.id.child_jian);
holder1.child_num=convertView.findViewById(R.id.child_num);
holder1.child_price = convertView.findViewById(R.id.child_price);
convertView.setTag(holder1);
}
else {
holder1= (Child_ViewHolder) convertView.getTag();
}
holder1.simple.setImageURI(list.get(groupPosition).getList().get(childPosition).getDetailUrl());
holder1.child_name.setText(list.get(groupPosition).getList().get(childPosition).getTitle()+"");
holder1.child_price.setText(list.get(groupPosition).getList().get(childPosition).getPrice()+"");
holder1.child_num.setText(list.get(groupPosition).getList().get(childPosition).getNum()+"");
notifyDataSetChanged();
//给checkbox设置默认状态(默认状态是指商品的状态)
holder1.child_checkbox.setChecked(list.get(groupPosition).getList().get(childPosition).isChecked());
//存下标
holder1.child_jia.setTag(groupPosition+"#"+childPosition);
holder1.child_jia.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//取出存的下标
String tag = (String) v.getTag();
//强制转换
int groupPosition = Integer.parseInt(tag.split("#")[0]);
int childPosition = Integer.parseInt(tag.split("#")[1]);
//判断商品是否被选中 如果选中重新计算价格
if(list.get(groupPosition).getList().get(childPosition).isChecked()) {
praise_num1 = list.get(groupPosition).getList().get(childPosition).getNum();
praise_num1++;
list.get(groupPosition).getList().get(childPosition).setNum(praise_num1);
notifyDataSetChanged();
holder1.child_num.setText(list.get(groupPosition).getList().get(childPosition).getNum()+"");
summ=0;
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.get(i).getList().size(); j++) {
if (list.get(i).getList().get(j).isChecked()){
double price = list.get(i).getList().get(j).getPrice();
int num2 = list.get(i).getList().get(j).getNum();
summ+=num2
price;
}
}
}
priceAll.setText(summ +"");
notifyDataSetChanged();
}
else {
//如果商品没选中 只改变值即可 不计算价格
praise_num1 = list.get(groupPosition).getList().get(childPosition).getNum();
praise_num1++;
list.get(groupPosition).getList().get(childPosition).setNum(praise_num1);
notifyDataSetChanged();
holder1.child_num.setText(list.get(groupPosition).getList().get(childPosition).getNum()+"");
}
}
});
//存下标
holder1.child_jian.setTag(groupPosition+"#"+childPosition);
holder1.child_jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取下标
String tag = (String) v.getTag();
//强制转换
int groupPosition = Integer.parseInt(tag.split("#")[0]);
int childPosition = Integer.parseInt(tag.split("#")[1]);
//判断商品是否被选中 如果选中重新计算价格
if(list.get(groupPosition).getList().get(childPosition).isChecked()) {
praise_num = list.get(groupPosition).getList().get(childPosition).getNum();
if (praise_num ==1){
Log.e(“m”,“不能再少了”);
}
else {
praise_num–;
}
list.get(groupPosition).getList().get(childPosition).setNum(praise_num);
holder1.child_num.setText(list.get(groupPosition).getList().get(childPosition).getNum()+"");
notifyDataSetChanged();
summ=0;
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.get(i).getList().size(); j++) {
if (list.get(i).getList().get(j).isChecked()){
double price = list.get(i).getList().get(j).getPrice();
int num2 = list.get(i).getList().get(j).getNum();
summ+=num2*price;
}
}
}
priceAll.setText(summ +"");
notifyDataSetChanged();
}
else {
//如果商品没选中 只改变值即可 不计算价格
praise_num = list.get(groupPosition).getList().get(childPosition).getNum();
if (praise_num ==1){
Log.e(“m”,“不能再少了”);
}
else {
praise_num–;
}
list.get(groupPosition).getList().get(childPosition).setNum(praise_num);
notifyDataSetChanged();
holder1.child_num.setText(list.get(groupPosition).getList().get(childPosition).getNum()+"");
}
}
});
//存下标
holder1.child_checkbox.setTag(groupPosition+"#"+childPosition);
//商品的点击事件
holder1.child_checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取存值
String tag = (String) v.getTag();
//强制转换
int groupPosition = Integer.parseInt(tag.split("#")[0]);
int childPosition = Integer.parseInt(tag.split("#")[1]);
CheckBox checkBox = (CheckBox) v;
//获取商品中checkbox状态
checked_childPosition = checkBox.isChecked();
//将商品中checkbox状态设置成商品的状态
list.get(groupPosition).getList().get(childPosition).setChecked(checked_childPosition);
//判断商品是否都被选中
boolean selectGroup = isSelectGroup(groupPosition);
//将所有商品的状态设置给 商家
list.get(groupPosition).setChecked(selectGroup);
//判断所有的商家是否被选中
boolean selectAllGroup = isSelectAllGroup();
//所有商家的状态设置给 全选的checkbox
checkAll.setChecked(selectAllGroup);
//商品如果被选中 计算价格
if(checked_childPosition) {
summ=0;
double price = list.get(groupPosition).getList().get(childPosition).getPrice();
int num = list.get(groupPosition).getList().get(childPosition).getNum();
summ+= num *price;
priceAll.setText(summ +"");
notifyDataSetChanged();
}
else {
//商品如果取消选中 计算价格
double price = list.get(groupPosition).getList().get(childPosition).getPrice();
int num = list.get(groupPosition).getList().get(childPosition).getNum();
summ-= num *price;
priceAll.setText(summ +"");
notifyDataSetChanged();
}
}
});
return convertView;
}
//判断商品是否都被选中
private boolean isSelectGroup(int groupPosition){
for (int i = 0; i < list.get(groupPosition).getList().size(); i++) {
boolean checked = list.get(groupPosition).getList().get(i).isChecked();
if (!checked){
return false;
}
}
return true;
}
class Group_ViewHolder{
TextView group_name;
CheckBox group_checkbox;
}
class Child_ViewHolder{
SimpleDraweeView simple;
TextView child_name;
CheckBox child_checkbox;
Button child_jia;
TextView child_num;
Button child_jian;
TextView child_price;
}
}
2.购物车主页面布局
activity_gou

<?xml version="1.0" encoding="utf-8"?>










3.商家布局
group

<?xml version="1.0" encoding="utf-8"?>



<TextView

   android:layout_marginLeft="28dp"
   android:layout_width="150dp"
   android:layout_height="45dp"
   android:id="@+id/group_name"
   />
4.商品 子条目布局 child <?xml version="1.0" encoding="utf-8"?>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值