Fragment 购物车适配器
来源:互联网 发布:淘宝上的vr靠谱吗 编辑:程序博客网 时间:2024/06/05 02:34
package Gwc;import android.content.Context;import android.support.v4.app.FragmentActivity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.Button;import android.widget.CheckBox;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import java.util.List;import Sudoku.SkBean;import lx.bwie.com.jd.MainActivity;import lx.bwie.com.jd.R;import lx.bwie.com.jd.fragment.ShoppingCartFragment;/** * Created by TH on 2017/12/18. */public class ElvAdapter extends BaseExpandableListAdapter { private LayoutInflater inflater; private ShoppingCartFragment shoppingCartFragment; private List<GetCartBean.DataBean> group; private List<List<GetCartBean.DataBean.ListBean>> child; private Context context; public ElvAdapter(ShoppingCartFragment shoppingCartFragment, Context context, List<GetCartBean.DataBean> group, List<List<GetCartBean.DataBean.ListBean>> child) { this.inflater = inflater.from(context); this.shoppingCartFragment = shoppingCartFragment; this.group = group; this.child = child; this.context = context; } @Override public int getGroupCount() { return group.size(); } @Override public int getChildrenCount(int groupPosition) { return child.get(groupPosition).size(); } @Override public Object getGroup(int groupPosition) { return group.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return child.get(groupPosition).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 false; } @Override public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View view; final GroupViewHolder holder; if (convertView == null) { view = inflater.inflate(R.layout.group, null); holder = new GroupViewHolder(); holder.tv = view.findViewById(R.id.tvGroup); holder.cbGroup = view.findViewById(R.id.cbGroup); view.setTag(holder); } else { view = convertView; holder = (GroupViewHolder) view.getTag(); } final GetCartBean.DataBean dataBean = group.get(groupPosition); holder.tv.setText(dataBean.getSellerName()); holder.cbGroup.setChecked(dataBean.isChecked()); holder.cbGroup.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //需要改变三个checkbox的状态值 //1.一级列表的checkbox状态值 dataBean.setChecked(holder.cbGroup.isChecked()); //2.二级列表的checkbox状态值 setChildrenCb(groupPosition, holder.cbGroup.isChecked()); //3.全选的checkbox状态值 shoppingCartFragment.setAllChecked(isAllGroupCbChecked()); //计算钱和数量并显示 setPriceAndCount(); //刷新界面 notifyDataSetChanged(); } }); return view; } @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, final View convertView, ViewGroup parent) { View view; final ChildViewHolder holder; if (convertView == null) { view = inflater.inflate(R.layout.child, null); holder = new ChildViewHolder(); holder.iv = view.findViewById(R.id.iv); holder.tvTitle = view.findViewById(R.id.tvTitle); holder.tvSubhead = view.findViewById(R.id.tvSubhead); holder.tvPrice = view.findViewById(R.id.tvPrice); holder.cbChild = view.findViewById(R.id.cbChild); holder.btDel = view.findViewById(R.id.btDel); holder.tvNum = view.findViewById(R.id.tvNum); holder.ivDel = view.findViewById(R.id.ivDel); holder.ivAdd = view.findViewById(R.id.ivAdd); view.setTag(holder); } else { view = convertView; holder = (ChildViewHolder) view.getTag(); } final GetCartBean.DataBean.ListBean listBean = child.get(groupPosition).get(childPosition); String images = listBean.getImages(); Glide.with(context).load(images.split("\\|")[0]).into(holder.iv); holder.tvTitle.setText(listBean.getTitle()); holder.cbChild.setChecked(child.get(groupPosition).get(childPosition).isChecked()); holder.tvSubhead.setText(listBean.getSubhead()); holder.tvPrice.setText("¥"+listBean.getPrice()); holder.tvNum.setText(listBean.getCount() + ""); //给checkbox设置点击事件 holder.cbChild.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //需要改变三个checkbox的状态值 //1.二级列表的checkbox状态值 listBean.setChecked(holder.cbChild.isChecked()); //2.一级列表的checkbox状态值 group.get(groupPosition).setChecked(isAllChildCbChecked(groupPosition)); //3.全选的checkbox状态值 shoppingCartFragment.setAllChecked(isAllGroupCbChecked()); //计算钱和数量并显示 setPriceAndCount(); //刷新界面 notifyDataSetChanged(); } }); holder.ivAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //获取目前显示的值 int count = listBean.getCount(); count++; //改变JavaBean里的状态值 listBean.setCount(count); //计算钱和数量并显示 setPriceAndCount(); //刷新列表 notifyDataSetChanged(); } }); holder.ivDel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //获取目前显示的值 int count = listBean.getCount(); if (count <= 1) { count = 1; } else { count--; } //改变JavaBean里的状态值 listBean.setCount(count); //计算钱和数量并显示 setPriceAndCount(); //刷新列表 notifyDataSetChanged(); } }); holder.btDel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //其实就是删除集合 List<GetCartBean.DataBean.ListBean> listBeans = child.get(groupPosition); if (listBeans.size() > 0) { listBeans.remove(childPosition); } if (listBeans.size() == 0) { child.remove(groupPosition); group.remove(groupPosition); } //计算钱和数量并显示 setPriceAndCount(); //改变全选状态 shoppingCartFragment.setAllChecked(isAllGroupCbChecked()); //刷新列表 notifyDataSetChanged(); } }); return view; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return false; } class GroupViewHolder { TextView tv; CheckBox cbGroup; } class ChildViewHolder { ImageView iv; TextView tvTitle; TextView tvSubhead; TextView tvPrice; CheckBox cbChild; Button btDel; TextView tvNum; ImageView ivDel; ImageView ivAdd; } /** * 设置一级列表对应的二级列表checkbox状态 * * @param groupPosition * @param bool */ private void setChildrenCb(int groupPosition, boolean bool) { List<GetCartBean.DataBean.ListBean> listBeans = child.get(groupPosition); for (int i = 0; i < listBeans.size(); i++) { listBeans.get(i).setChecked(bool); } } /** * 判断一级列表checkbox状态 * * @return */ private boolean isAllGroupCbChecked() { if (group.size() == 0) { return false; } for (int i = 0; i < group.size(); i++) { if (!group.get(i).isChecked()) { return false; } } return true; } /** * 判断二级列表checkbox状态 * * @return */ private boolean isAllChildCbChecked(int groupPosition) { List<GetCartBean.DataBean.ListBean> listBeans = child.get(groupPosition); for (int i = 0; i < listBeans.size(); i++) { if (!listBeans.get(i).isChecked()) { return false; } } return true; } /** * 设置钱和数量 */ private void setPriceAndCount() { shoppingCartFragment.setPriceAndCount(compute()); } /** * 计算钱和数量 */ private PriceAndCount compute() { double price = 0; int count = 0; for (int i = 0; i < group.size(); i++) { List<GetCartBean.DataBean.ListBean> listBeans = child.get(i); for (int j = 0; j < listBeans.size(); j++) { if (listBeans.get(j).isChecked()) { price += listBeans.get(j).getPrice() * listBeans.get(j).getCount(); count += listBeans.get(j).getCount(); } } } return new PriceAndCount(price, count); } /** * 全选或者全不选 * * @param bool */ public void AllOrNone(boolean bool) { for (int i = 0; i < group.size(); i++) { group.get(i).setChecked(bool); setChildrenCb(i, bool); } setPriceAndCount(); notifyDataSetChanged(); }}
阅读全文
0 0
- Fragment 购物车适配器
- 购物车适配器代码
- 购物车的适配器
- 购物车适配器
- 购物车适配器
- 购物车适配器
- 购物车二级列表适配器
- 仿京东购物车专用适配器
- 仿购物车的适配器
- 二级列表的购物车-适配器
- 购物车的逻辑代码与适配器
- 网络更新购物车的适配器
- Fragment的适配器adap
- 适配器Fragment,Viewpager
- 购物车(Activity+Fragment)贝塞尔曲线动画实现
- 购物车实现单选、多选、全选和一些fragment的布局
- andriod——Retrofit+Fresco+MVP+Fragment里添加购物车
- 购物车
- 这些问题将导致信用卡降额,让你损失几十万
- springMVC mybatis dao接口(mapper接口)注入失败
- ubuntu 查看显卡
- Log4j日志配置
- 让p 和 span标签自动换行的css语句
- Fragment 购物车适配器
- 临颍县现代农业示范园区物联网水肥一体化项目
- Intellij IDEA——常用快捷键介绍 +快捷键大全汇总
- WebGIS 中电子地图Scale和Resolution参数及其互转
- 世峰数字——柯木塱展馆“增强现实、虚拟现实互动”方案
- Python171220-如何优美的处理结构
- linux虚拟IP配置
- 腾讯 SNG 全链路日志监控平台之构建挑战
- LeetCode(14) Longest Common Prefix