您的位置:首页 > 其它

使用ExpandListView二级列表实现购物车

2017-10-24 18:43 507 查看

xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.8"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="购物车"

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
/>
<TextView
android:id="@+id/bianji"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="编辑"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"

/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9.5"
android:orientation="vertical"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9">
<ExpandableListView
android:id="@+id/ev"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ExpandableListView>
</LinearLayout>
<LinearLayout
android:background="#ffffff"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.6"
android:orientation="horizontal"
>

<LinearLayout
android:layout_width="0dp"
android:layout_weight="5"
android:layout_height="match_parent">

<CheckBox
android:id="@+id/quanxuan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选"
/>
</LinearLayout>

<TextView

android:layout_width="0dp"
android:layout_weight="0.8"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="合计:"
android:layout_gravity="top"
/>
<TextView
android:id="@+id/heji"
android:layout_width="0dp"
android:layout_weight="1.7"
android:textColor="#0ff000"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:text="$0"
android:layout_gravity="top"
/>
<RelativeLayout
android:layout_width="0dp"
android:layout_weight="1.5"
android:background="#f00"
android:layout_height="match_parent">
<TextView
android:id="@+id/jiesuan"
android:onClick="dian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:text="结算(0)"
/>
</RelativeLayout>
</LinearLayout>

</LinearLayout>

</LinearLayout>


//适配器

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List;

//二级 适配器
public class MyExpandListView extends BaseExpandableListAdapter {

private Context context;
private List<GwcBean.DatasBean.CartListBean> cart_list;

public MyExpandListView(Context context, List<GwcBean.DatasBean.CartListBean> cart_list) {
this.context = context;
this.cart_list = cart_list;
}

@Override
public int getGroupCount() {
return cart_list==null?0:cart_list.size() ;
}

@Override
public int getChildrenCount(int groupPosition) {
return cart_list.get(groupPosition).getGoods().size();
}

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

@Override
public Object getChild(int groupPosition, int childPosition) {
return cart_list.get(groupPosition).getGoods().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, final boolean isExpanded, View convertView, ViewGroup parent) {

convertView=View.inflate(context, R.layout.ev1_item,null);
final CheckBox cb= (CheckBox) convertView.findViewById(R.id.cb);
cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击  记住状态
cart_list.get(groupPosition).setChecked(cb.isChecked());
//联动  二级状态
for(int i=0;i<cart_list.get(groupPosition).getGoods().size();i++)
{
cart_list.get(groupPosition).getGoods().get(i).setChecked(cb.isChecked());
if(i==cart_list.get(groupPosition).getGoods().size()-1)
{
//最后一条刷新适配器
notifyDataSetChanged();
}
}
//遍历 判断 回调全选状态
//定义变量
Boolean isquan=true;
for (int i=0;i<cart_list.size();i++)
{
if(cart_list.get(i).getChecked()==false)
{
isquan=false;
}
}
myin.select(isquan);
}
});
//回调
getprice();
cb.setChecked(cart_list.get(groupPosition).getChecked());
TextView lei= (TextView) convertView.findViewById(R.id.lei);
lei.setText(cart_list.get(groupPosition).getStore_name());
return convertView;
}

@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

convertView=View.inflate(context,R.layout.ev2_item,null);
final CheckBox cb= (CheckBox) convertView.findViewById(R.id.cb);
cb.setChecked(cart_list.get(groupPosition).getGoods().get(childPosition).getChecked());
//监听
cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击   记住状态
cart_list.get(groupPosition).getGoods().get(childPosition).setChecked(cb.isChecked());
//联动   一级状态
//定义变量
Boolean ishas=true;
for(int i=0;i<cart_list.get(groupPosition).getGoods().size();i++)
{
if(cart_list.get(groupPosition).getGoods().get(i).getChecked()==false)
{
ishas=false;
}
}
//判断变量
cart_list.get(groupPosition).setChecked(ishas);
//刷新适配器
notifyDataSetChanged();
//循环遍历  回调全选状态
//定义变量
Boolean isquan=true;
for (int i=0;i<cart_list.size();i++)
{
for(int j=0;j<cart_list.get(i).getGoods().size();j++)
{
//如果有未选中
if(cart_list.get(i).getGoods().get(j).getChecked()==false)
{
isquan=false;
}
}
}
//回调
myin.select(isquan);
//回调
getprice();

}

});
ImageView imageView= (ImageView) convertView.findViewById(R.id.shop);
TextView tv1= (TextView) convertView.findViewById(R.id.tv1);
TextView tv2= (TextView) convertView.findViewById(R.id.tv2);
tv2.setText(cart_list.get(groupPosition).getGoods().get(childPosition).getGoods_price());
TextView tv3= (TextView) convertView.findViewById(R.id.tv3);
Log.i("num",cart_list.get(groupPosition).getGoods().size()+"");
tv3.setText("X "+cart_list.get(groupPosition).getGoods().get(childPosition).getGoods_num()+"");
Picasso.with(context).load(cart_list.get(groupPosition).getGoods().get(childPosition).getGoods_image_url()).into(imageView);
return convertView;
}

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

private OnClick myin;

public void setMyin(OnClick myin) {
this.myin = myin;
}

//定义接口回调
public interface OnClick{

//回调全选
void select(Boolean ischecked);
//回调结算
void jiesuan(int price,int shu);

}
private void getprice() {
// 回调计算
int price=0;
int shu=0;
for (int i=0;i<cart_list.size();i++)
{
for (int j=0;j<cart_list.get(i).getGoods().size();j++)
{
if(cart_list.get(i).getGoods().get(j).getChecked())
{
int num= Integer.parseInt(cart_list.get(i).getGoods().get(j).getGoods_num()) ;
float qian=Float.parseFloat(cart_list.get(i).getGoods().get(j).getGoods_price());
price+=num*qian;
shu++;
}
}
}
myin.jiesuan(price,shu);
}
}


activity

private ExpandableListView ev;

private CheckBox quanxuan;

private MyExpandListView adapter;

private TextView heji;

private TextView jiesuan;

heji = (TextView) view.findViewById(R.id.heji);

jiesuan = (TextView) view.findViewById(R.id.jiesuan);

quanxuan = (CheckBox) view.findViewById(R.id.quanxuan);

ev = (ExpandableListView) view.findViewById(R.id.ev);

//全选监听
quanxuan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//当我点击   全选
//遍历集合   当前状态true
for (int i=0;i<cart_list.size();i++)
{
cart_list.get(i).setChecked(quanxuan.isChecked());
for (int j=0;j<cart_list.get(i).getGoods().size();j++)
{
cart_list.get(i).getGoods().get(j).setChecked(quanxuan.isChecked());
}
}
//刷新适配器
adapter.notifyDataSetChanged();
}
});

//设置适配器
adapter = new M
9b26
yExpandListView(getContext(),cart_list);
ev.setAdapter(adapter);
//打开所有
for(int i = 0; i< adapter.getGroupCount(); i++)
{
ev.expandGroup(i);
}
//处理回调
adapter.setMyin(new MyExpandListView.OnClick() {
@Override
public void select(Boolean ischecked) {
quanxuan.setChecked(ischecked);
}

@Override
public void jiesuan(int price,int shu) {

heji.setText("&:"+price);
jiesuan.setText("结算("+shu+")");
qian=price;
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: