布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/sumbgcolor"
android:text="-"/>
<TextView
android:id="@+id/count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/sumbgcolor"
android:text="0"/>
<TextView
android:id="@+id/add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/sumbgcolor"
android:text="+"/>
</LinearLayout>
自定义布局
public class SumLayout extends LinearLayout implements View.OnClickListener {
private TextView sub;
private TextView count;
private TextView add;
private OnDownSumLayouListener onDownSumLayoutListener;
//自定义View的构造方法
public SumLayout(Context context) {
this(context, null);
}
public SumLayout(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public SumLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//加载视图
View view = View.inflate(context, R.layout.sumlayout, this);
//获取控件
sub = view.findViewById(R.id.sub);
count = view.findViewById(R.id.count);
add = view.findViewById(R.id.add);
//注册点击事件
sub.setOnClickListener(this);
add.setOnClickListener(this);
}
//点击事件
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sub://数量减减
//得到数量
String ss = count.getText().toString();
//转为int型
int i = Integer.parseInt(ss);
//减减
i--;
//判断当i大于等于0时给TextView赋值
if (i >= 0) {
setCount(i + "");
//调用自定义接口点击事件
onDownSumLayoutListener.onDownSumLayout();
}
break;
case R.id.add://数量加加
//获取数量
String s = count.getText().toString();
//转为int型
int i1 = Integer.parseInt(s);
//数量加加
i1++;
//给数量TextView赋值
setCount(i1 + "");
//调用自定义接口点击事件
onDownSumLayoutListener.onDownSumLayout();
break;
}
}
//给数量TextView赋值的方法
public void setCount(String counts) {
count.setText(counts);
}
//获取数量方法
public String getCount() {
return count.getText().toString();
}
//自定义接口点击事件
public interface OnDownSumLayouListener {
void onDownSumLayout();
}
//外部访问接口的方法
public void setOnDownSumLayoutListener(OnDownSumLayouListener onDownSumLayoutListener) {
this.onDownSumLayoutListener = onDownSumLayoutListener;
}
}
导入布局
<zjc.com.yuekaomoni.view.customview.SumLayout
android:id="@+id/cart_childe_item_sumlayout"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
/>
边框
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="0.1dp" android:color="#000000"></stroke>
<size android:width="25dp" android:height="15dp"></size>
</shape>
购物车加减
//减
holder2.sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int num = list.get(groupPosition).getList().get(childPosition).getNum();
if (num==1){
Toast.makeText(context,"数量至少为1",Toast.LENGTH_SHORT).show();
list.get(groupPosition).getList().get(childPosition).setNum(1);
updateBack.update(
list.get(groupPosition).getList().get(childPosition).getSellerid(),
list.get(groupPosition).getList().get(childPosition).getPid(),
list.get(groupPosition).getList().get(childPosition).getSelected(),
list.get(groupPosition).getList().get(childPosition).getNum()
);
notifyDataSetChanged();
}else{
num--;
list.get(groupPosition).getList().get(childPosition).setNum(num);
updateBack.update(
list.get(groupPosition).getList().get(childPosition).getSellerid(),
list.get(groupPosition).getList().get(childPosition).getPid(),
list.get(groupPosition).getList().get(childPosition).getSelected(),
list.get(groupPosition).getList().get(childPosition).getNum()
);
notifyDataSetChanged();
}
}
});
//加
holder2.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int num = list.get(groupPosition).getList().get(childPosition).getNum();
num++;
list.get(groupPosition).getList().get(childPosition).setNum(num);
updateBack.update(
list.get(groupPosition).getList().get(childPosition).getSellerid(),
list.get(groupPosition).getList().get(childPosition).getPid(),
list.get(groupPosition).getList().get(childPosition).getSelected(),
list.get(groupPosition).getList().get(childPosition).getNum()
);
notifyDataSetChanged();
}
});
购物车数量 价格刷新
private CallNumAndPrice callNumAndPrice;
public MyCartsAdapter(Context context, List<ShowCartsBean.DataBean> list,CallNumAndPrice callNumAndPrice) {
this.context=context;
this.list=list;
this.callNumAndPrice=callNumAndPrice;
}
public void Count(){
num=0;
price=0;
for(ShowCartsBean.DataBean li:list){
List<ShowCartsBean.DataBean.ListBean> list1 = li.getList();
for(ShowCartsBean.DataBean.ListBean l:list1){
if (l.getSelected()==1) {
num += l.getNum();
price += (l.getNum() * l.getPrice());
}
}
}
}
holder2.ck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (list.get(groupPosition).getList().get(childPosition).getSelected()==1){
list.get(groupPosition).getList().get(childPosition).setSelected(0);
}else if (list.get(groupPosition).getList().get(childPosition).getSelected()==0){
list.get(groupPosition).getList().get(childPosition).setSelected(1);
}
notifyDataSetChanged();
}
});
public interface CallNumAndPrice{
void numprice(int num,int price);
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
Count();
callNumAndPrice.numprice(num,price);
}