使用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; } });
相关文章推荐
- [置顶] Android--ExpandableListview二级列表购物车功能实现
- Android电商项目 ExpandableListView(二级列表)实现购物车(高仿淘宝) demo
- Android::ExpandableListView二级列表控件的使用
- 我的Android进阶之旅------>Android二级ListView列表的实现
- 使用swipemenulistview实现列表的左右滑动
- 通过代码动态添加列表item实现列表(不使用listview列表)
- html+js+PHP(使用了smarty模板技术)+mysql实现二级动态下拉列表(select)
- 【深入篇】自定义ExpandableListView,实现二级列表效果
- android开发之ExpandableListView的使用,实现类似QQ好友列表
- 二级菜单ExpandPopView的使用和实现
- Android采用ListView实现数据列表显示1-使用SimpleCursorAdapter进行数据绑定
- 实现ExpandableListView 二级列表,点击二级条目状态的改变
- ExpandInfoAdapter实现二级列表显示
- android开发之ExpandableListView的使用,实现类似QQ好友列表
- 使用BaseAdapter 与ListView结合创建图文实现更灵活的列表
- Android应用中使用ListView实现数据列表显示(传智播客视频笔记)
- 使用swipemenulistview实现列表的左右滑动
- android开发之ExpandableListView的使用,实现类似QQ好友列表
- android二级listview列表实现代码(高仿大众点评)
- android开发之ExpandableListView的使用,实现类似QQ好友列表