购物车二级列表

@GET(“ks/product/getCarts”)
Observable getGou(@Header(“userId”)int userId, @Header(“sessionId”)String sessionId, @Query(“uid”)int uid);

<ExpandableListView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="9"
    android:id="@+id/expandlistview">
</ExpandableListView>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:orientation="vertical"
    >
    <TextView
        android:layout_width="48dp"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/price_all"
        android:text="5995"
        />
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/check_all"
        android:text="全选"
        />
</LinearLayout>


 Observable<Gou> callm = okHttp.api.getGou(2818,"15539135627802818",51);

@BindView(R.id.expandlistview)
ExpandableListView expandableListView;
@BindView(R.id.check_all)
CheckBox check_all;
@BindView(R.id.price_all)
TextView price_all;
private Unbinder unbinder;
private Presenter presenter;
private GouAdapter gouAdapter;

Presenter presenter = new Presenter();
    presenter.setView(this);
    presenter.loadGou();
    unbinder = ButterKnife.bind(this);

public void Pm(Object o) {
Gou gou = (Gou) o;
List<Gou.DataBean> list = gou.getData();
list.remove(0);
gouAdapter = new GouAdapter(MainActivity.this, list, check_all, price_all);
expandableListView.setAdapter(gouAdapter);
for (int i = 0; i <list.size() ; i++) {
expandableListView.expandGroup(i);
}

}

childxml
CheckBox
android:layout_width=“wrap_content”
android:layout_height=“40dp”
android:id="@+id/child_checkbox"
android:layout_marginLeft=“50dp”
android:layout_marginTop=“15dp”
/>

<TextView
android:layout_marginLeft="20dp"
android:layout_width="150dp"
android:layout_height="60dp"
android:id="@+id/child_name"
/>
<TextView
    android:layout_marginTop="15dp"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:id="@+id/child_price"
    android:layout_marginLeft="10dp"
    android:text="15元"
    />
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >
    <bw.x.shan.view.Myview
        android:layout_width="100dp"
        android:layout_height="40dp"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="15dp"
        >
        <Button
            android:focusable="true"
            android:id="@+id/child_jia"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:text="+"
            android:background="@color/colorAccent"
            />
        <TextView
            android:layout_width="40dp"
            android:layout_height="20dp"
            android:id="@+id/child_num"
            android:gravity="center"
            />
        <Button
            android:focusable="true"
            android:background="@color/colorAccent"
            android:id="@+id/child_jian"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:text="-"
            />
    </bw.x.shan.view.Myview>
</LinearLayout>

groupxml

LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“horizontal”>
CheckBox
android:id="@+id/group_checkbox"
android:layout_width=“wrap_content”
android:layout_marginLeft=“50dp”
android:layout_marginTop=“15dp”
android:focusable=“false”
android:clickable=“true”
android:layout_height=“wrap_content” />
TextView
android:layout_marginLeft=“28dp”
android:layout_width=“150dp”
android:layout_height=“45dp”
android:id="@+id/group_name"
/>
/LinearLayout>

public class Myview extends ViewGroup {
public Myview(Context context) {
this(context,null); }

public Myview(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    for (int i = 0; i <getChildCount() ; i++) {
        View childAt = getChildAt(i);
        measureChild(childAt,widthMeasureSpec,heightMeasureSpec);
    }   }
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    for (int i = 0; i < getChildCount(); i++) {
        View childAt = getChildAt(i);
        int measuredWidth = childAt.getMeasuredWidth();
        int measuredHeight = childAt.getMeasuredHeight();
        if (i==0){
            childAt.layout(0,0,measuredWidth,measuredHeight);
        }
        if (i==1){
            childAt.layout(30,10,measuredWidth+30,measuredHeight+10);
        }
        if (i==2){
            childAt.layout(70,0,measuredWidth+70,measuredHeight);
        }   }  }
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
}

}

GouAdapter extends BaseExpandableListAdapter {
private Group_ViewHolder holder;
private Child_ViewHolder holder1;
private int summ=0;
Context context;
List<Gou.DataBean> list;
CheckBox checkAll;
TextView priceAll;
public GouAdapter(Context context, final List<Gou.DataBean> list, CheckBox checkAll, final TextView priceAll) {
this.context = context;
this.list = list;
this.checkAll = checkAll;
this.priceAll = priceAll;
checkAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox checkAll_checkBox = (CheckBox) v;
boolean checkAll_status = checkAll_checkBox.isChecked();
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();
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());
holder.group_checkbox.setChecked(list.get(groupPosition).isChecked());
holder.group_checkbox.setTag(groupPosition);
holder.group_checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = v.getTag().toString();
int checked_groupPosition = Integer.parseInt(s);
CheckBox group_checkBox= (CheckBox) v;
boolean group_checkBox_status = group_checkBox.isChecked();
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());
}
boolean selectAllGroup = isSelectAllGroup();
checkAll.setChecked(selectAllGroup);
notifyDataSetChanged();
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.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);
holder1.linearLayout=convertView.findViewById(R.id.ch);
convertView.setTag(holder1);
}
else { holder1= (Child_ViewHolder) convertView.getTag(); }
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();
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()) {
int 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 {
int 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()) {
int 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 {
int 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;
boolean checked_childPosition = checkBox.isChecked();
list.get(groupPosition).getList().get(childPosition).setChecked(checked_childPosition);
boolean selectGroup = isSelectGroup(groupPosition);
list.get(groupPosition).setChecked(selectGroup);
boolean selectAllGroup = isSelectAllGroup();
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{
LinearLayout linearLayout;
TextView child_name;
CheckBox child_checkbox;
Button child_jia;
TextView child_num;
Button child_jian;
TextView child_price;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值