购物车

public class MainActivity extends AppCompatActivity implements View.OnClickListener, Prasenter.DataView {

private ExpandableListView elsv;
private CheckBox quanxuan;
private Button heji;
Prasenter prasenter;
TextView zongjia;
Myadapter myadapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    **initView();
    dianjihuidiao();
    prasenter.data();
    xiabuxiaxin();**
}

**private void xiabuxiaxin() {
    int number = myadapter.number();
    heji.setText("总计:"+number);
    float pricess = myadapter.pricess();
    zongjia.setText("总价:"+pricess);
}**

private void dianjihuidiao() {
    myadapter.dianjiimp(new Myadapter.Dianji() {
        @Override
        **public void shangjiadainji(int groupPosition) {
            Boolean shangpingquanbuxuanzhong = myadapter.shangpingquanbuxuanzhong(groupPosition);
            myadapter.shangjiaquanbuxuanzhong(!shangpingquanbuxuanzhong,groupPosition);
            myadapter.notifyDataSetChanged();
            xiabuxiaxin();
        }**

        **@Override
        public void shangpindanji(int groupPosition, int childPosition) {
                myadapter.zhitiaomuxuanzhong(groupPosition,childPosition);
            myadapter.notifyDataSetChanged();
                xiabuxiaxin();
        }**

        **@Override
        public void jiajiandianji(int groupPosition, int childPosition, int number) {
                myadapter.jiajiandejiangting(groupPosition,childPosition,number);
                myadapter.notifyDataSetChanged();
                xiabuxiaxin();
        }
    });**



    **quanxuan.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Boolean suoyouzhitiaomuxuanzhong = myadapter.suoyouzhitiaomuxuanzhong();
            myadapter.waibuquanxuananniuxuanzhong(!suoyouzhitiaomuxuanzhong);
            myadapter.notifyDataSetChanged();
            xiabuxiaxin();
        }
    });**

}

**private void initView() {
    elsv = (ExpandableListView) findViewById(R.id.elsv);
    quanxuan = (CheckBox) findViewById(R.id.quanxuan);
    heji = (Button) findViewById(R.id.heji);
    zongjia =  findViewById(R.id.zongjia);
    prasenter = new Prasenter(this);
     myadapter = new Myadapter(this);
     elsv.setAdapter(myadapter);
    heji.setOnClickListener(this);
}**

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.heji:

            break;
    }
}

@Override
public void cg(List<JsonBean.DataBean> list) {
    myadapter.dataString(list);
}

@Override
public void sb() {
    Toast.makeText(MainActivity.this,"数据获取失败",Toast.LENGTH_SHORT).show();
}

**@Override
protected void onDestroy() {
    super.onDestroy();
    prasenter=null;
}

}**

activity布局







自定义控件:
public class MyAddSubView extends LinearLayout implements View.OnClickListener {

**private int number = 1;
private TextView sub_tv;
private TextView product_number_tv;
private TextView add_tv;**

public MyAddSubView(Context context) {
    this(context, null);
}

public MyAddSubView(Context context, @Nullable AttributeSet attrs) {
    this(context, attrs, 0);
}

public MyAddSubView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    **View view = inflate(context, R.layout.add_remove_view_layout, this);
    sub_tv=view.findViewById(R.id.sub_tv);
    product_number_tv=view.findViewById(R.id.product_number_tv);
    add_tv=view.findViewById(R.id.add_tv);
    sub_tv.setOnClickListener(this);
    add_tv.setOnClickListener(this);**
}


**@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.sub_tv:
            if (number > 1) {
                --number;
                product_number_tv.setText(number + "");
                if (onNumberChangeListener != null) {
                    onNumberChangeListener.onNumberChange(number);
                }
            } else {
                Toast.makeText(getContext(), "不能再少了", Toast.LENGTH_SHORT).show();
            }
            break;
        case R.id.add_tv:
            ++number;
            product_number_tv.setText(number + "");
            if (onNumberChangeListener != null) {
                onNumberChangeListener.onNumberChange(number);
            }
            break;
    }
}**


**public int getNumber() {
    return number;
}**

**public void setNumber(int number) {
    this.number = number;
    product_number_tv.setText(number + "");
}**

**OnNumberChangeListener onNumberChangeListener;
public void setOnNumberChangeListener(OnNumberChangeListener onNumberChangeListener) {
    this.onNumberChangeListener = onNumberChangeListener;
}
interface OnNumberChangeListener {
    void onNumberChange(int num);
}**

}

自定义view的布局:

**android:padding="2dp"
android:layout_marginLeft="10dp"
android:layout_width="60dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:background="#99000000"
android:gravity="center_vertical">**

**<TextView
    android:background="#ffffff"
    android:layout_weight="1"
    android:id="@+id/sub_tv"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:gravity="center"
    android:text="-"
    android:textSize="16sp" />
<TextView
    android:text="1"
    android:layout_marginLeft="2dp"
    android:background="#ffffff"
    android:layout_weight="1"
    android:id="@+id/product_number_tv"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:gravity="center"
   />
<TextView
    android:layout_marginLeft="2dp"
    android:background="#ffffff"
    android:layout_weight="1"
    android:id="@+id/add_tv"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:gravity="center"
    android:text="+"
    android:textSize="16sp" />**

商家布局

商品布局:







<liyuanqi.bwie.com.gouwuchelx.MyAddSubView
android:id="@+id/zhuhe"
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginRight=“10dp” />

adapter中:

class Myadapter extends BaseExpandableListAdapter {
private Context context;
private List<JsonBean.DataBean> mList;

public Myadapter(Context context) {
    this.context = context;
    mList = new ArrayList<>();
}

public void dataString(List<JsonBean.DataBean> List) {
    this.mList = List;
    notifyDataSetChanged();
}

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

@Override
public int getChildrenCount(int groupPosition) {
    return mList.get(groupPosition).getList().size();
}

@Override
public Object getGroup(int groupPosition) {
    return mList.get(groupPosition);
}

@Override
public Object getChild(int groupPosition, int childPosition) {
    return mList.get(groupPosition).getList().get(childPosition);
}

@Override
public long getGroupId(int groupPosition) {
    return groupPosition;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
    return childPosition;
}

@Override
public boolean hasStableIds() {
    return true;
}

@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    **GroupHolder holder;
    if (convertView == null) {
        holder = new GroupHolder();
        convertView = View.inflate(context, R.layout.shuju1, null);
        holder.title1 = convertView.findViewById(R.id.tit1);
        holder.groupchick = convertView.findViewById(R.id.fuchick);
        convertView.setTag(holder);
    } else {
        holder = (GroupHolder) convertView.getTag();
    }
    holder.title1.setText(mList.get(groupPosition).getSellerName());
    //判断商家下的所有商品:是否全部选中
    Boolean aBoolean = shangpingquanbuxuanzhong(groupPosition);
    //根据:(判断商家下的所有商品:是否全部选中)为商家的复选框设置选中或者不选中
    holder.groupchick.setChecked(aBoolean);
    //商家的点击事件的接口回调
    holder.groupchick.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mDianji.shangjiadainji(groupPosition);
        }
    });
    return convertView;**
}

@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    **ViewHolder holder;
    if (convertView == null) {
        holder = new ViewHolder();
        convertView = View.inflate(context, R.layout.shuju2, null);
        holder.tit2 = convertView.findViewById(R.id.tit2);
        holder.img=convertView.findViewById(R.id.img);
        holder.price=convertView.findViewById(R.id.price);
        holder.zhuhe=convertView.findViewById(R.id.zhuhe);
        holder.zhichick=convertView.findViewById(R.id.zhichick);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    ImageLoader.getInstance().displayImage(mList.get(groupPosition).getList().get(childPosition).getImages(),holder.img);
    holder.price.setText(mList.get(groupPosition).getList().get(childPosition).getPrice()+"");
    holder.tit2.setText(mList.get(groupPosition).getList().get(childPosition).getTitle());
    holder.zhuhe.setNumber(mList.get(groupPosition).getList().get(childPosition).getNum());
    holder.zhichick.setChecked(mList.get(groupPosition).getList().get(childPosition).getSelected()==1);
    //商品的点击事件的接口回调
    holder.zhichick.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mDianji.shangpindanji(groupPosition,childPosition);
        }
    });
   //组合式自定义控件的接口回调:刷新数量值
    holder.zhuhe.setOnNumberChangeListener(new MyAddSubView.OnNumberChangeListener() {
        @Override
        public void onNumberChange(int num) {
            mDianji.jiajiandianji(groupPosition,childPosition,num);
        }
    });
    return convertView;
}**

**//所有商品被选中

public Boolean suoyouzhitiaomuxuanzhong(){
for (int j=0;j<mList.size();j++){
List<JsonBean.DataBean.ListBean> list = mList.get(j).getList();
for (int x=0;x<list.size();x++){
if (list.get(x).getSelected()==0){
return false;
}
}
}
return true;
}**

**//全选的复选框是否选中

public void waibuquanxuananniuxuanzhong(boolean isselect){
for (int j=0;j<mList.size();j++){
List<JsonBean.DataBean.ListBean> list = mList.get(j).getList();
for (int x=0;x<list.size();x++){
list.get(x).setSelected(isselect?1:0);
}
}

}**

**//商家下的商品全部选中
public Boolean shangpingquanbuxuanzhong(int groupPosition){
        List<JsonBean.DataBean.ListBean> list = mList.get(groupPosition).getList();
        for (int x=0;x<list.size();x++){
            if (list.get(x).getSelected()==0){
                return false;
            }
        }
    return true;
}**

**//商家全部选中
public void shangjiaquanbuxuanzhong(boolean isselect,int groupPosition){
    List<JsonBean.DataBean.ListBean> list = mList.get(groupPosition).getList();
    for (int x=0;x<list.size();x++){
        list.get(x).setSelected(isselect?1:0);
    }
}**

**//商品的选中和不选中
public void zhitiaomuxuanzhong(int groupPosition,int childPosition){
    JsonBean.DataBean.ListBean listBean = mList.get(groupPosition).getList().get(childPosition);
    listBean.setSelected(listBean.getSelected()==0?1:0);
}**

**//更新加减的数量
public void jiajiandejiangting(int groupPosition,int childPosition,int number){
    JsonBean.DataBean.ListBean listBean = mList.get(groupPosition).getList().get(childPosition);
    listBean.setNum(number);
}**

**//计算商品数量
public int number(){
    int nums=0;
    for (int j=0;j<mList.size();j++){
        List<JsonBean.DataBean.ListBean> list = mList.get(j).getList();
        for (int x=0;x<list.size();x++){
            if (list.get(x).getSelected()==1){
                nums+=list.get(x).getNum();
            }
        }
    }
    return nums;
}**


**//计算商品总价
public float pricess(){
    float priceX=0;
    for (int j=0;j<mList.size();j++){
        List<JsonBean.DataBean.ListBean> list = mList.get(j).getList();
        for (int x=0;x<list.size();x++){
            if (list.get(x).getSelected()==1){
                priceX+=list.get(x).getNum()*list.get(x).getPrice();
            }
        }
    }
    return priceX;
}**

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
    return true;
}


**class GroupHolder {
    TextView title1;
    CheckBox groupchick;
}
public class ViewHolder {
    public CheckBox zhichick;
    public ImageView img;
    public TextView tit2;
    public TextView price;
    public MyAddSubView zhuhe;
}**



**public  interface  Dianji{
    //商家的点击事件
    void shangjiadainji(int groupPosition);
    //商品的点击事件
    void shangpindanji(int groupPosition, int childPosition);
    //加减的点击事件
    void jiajiandianji(int groupPosition,int childPosition,int number);
}
private  Dianji mDianji;
public  void dianjiimp(Dianji dianji){
    mDianji=dianji;
}

}**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值