BigDemo----Adapters

GildeApp

public class GildeApplication extends ImageLoader {
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        //初始化Glid包
        Glide.with(context).load(path).into(imageView);
    }
}

GoodsAdapter

public class GoodsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private List<GoodsBean.DataBean> list;
    private Context context;

    public GoodsAdapter(List<GoodsBean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.itemlayout1, viewGroup, false);
        return (new ViewHolder(view));
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int position) {

        ((ViewHolder) viewHolder).item_dec.setText(list.get(position).getTitle());
        ((ViewHolder) viewHolder).item_price.setText(list.get(position).getPrice() + "");
        String images = list.get(position).getImages();
        String imageurl = "http" + images.substring(5);

        String[] split = imageurl.split("\\|");
        if (split.length > 0) {
            Glide.with(context).load(split[0]).into(((ViewHolder) viewHolder).item_img);
            //   Glide.with(context).load(ii).into(((ViewHolder) viewHolder).item_img);
        }
        viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 1f, 0f, 1f);
                alpha.setDuration(5000);
                alpha.start();
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setTitle("删除");
                builder.setMessage("确认删除吗");
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        list.remove(position);
                        notifyDataSetChanged();
                    }
                });
                builder.setNegativeButton("取消", null);
                builder.show();
                return true;
            }
        });
        viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context, GoodsActivity.class);
//                intent.putExtra("aaa", list.get(position).getTitle());
//                intent.putExtra("bbb", list.get(position).getBargainPrice());
//                intent.putExtra("eee", list.get(position).getImages());
//                context.startActivity(intent);
                Toast.makeText(context, "点击了" + position, Toast.LENGTH_LONG).show();
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        private TextView item_dec, item_price;
        private ImageView item_img;

        public ViewHolder(View itemView) {
            super(itemView);
            item_img = itemView.findViewById(R.id.img_icon);
            item_dec = itemView.findViewById(R.id.txt_name);
            item_price = itemView.findViewById(R.id.txt_price);
        }
    }
}

GildeAdapter

public class GridAdapter extends BaseAdapter {
    private List<GrBean.DataBean> mList = new ArrayList<>();

    public List<GrBean.DataBean> getmList() {
        return mList;
    }

    public void setmList(List<GrBean.DataBean> mList) {
        this.mList = mList;
    }

    public Context getContext() {
        return context;
    }

    public void setContext(Context context) {
        this.context = context;
    }

    private Context context;



    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int position) {
        return mList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if (convertView == null) {
            viewHolder = new ViewHolder();
            convertView = View.inflate(context, R.layout.itemlayout, null);
            viewHolder.grid_name = convertView.findViewById(R.id.txt_name);
            viewHolder.grid_image = convertView.findViewById(R.id.img_icon);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.grid_name.setText(mList.get(position).getName());
        Picasso.with(context).load(mList.get(position).getIcon()).into
                (viewHolder.grid_image);
        return convertView;
    }

    class ViewHolder {
        TextView grid_name;
        ImageView grid_image;
    }
}

ShopAdapter

public class ShopAdapter extends BaseExpandableListAdapter {
    private List<Shop.DataBean> shopData;
    private double price;
    private int num;

    public ShopAdapter(List<Shop.DataBean> shopData) {
        this.shopData = shopData;
    }

    //1.有多少按钮
    @Override
    public int getGroupCount() {
        return shopData.size();
    }

    //2.一个组里有多少子条目
    @Override
    public int getChildrenCount(int groupPosition) {
        return shopData.get(groupPosition).getList().size();
    }

    ////////P.组布局////////
    @Override
    public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        //P1.获取组的下标
        Shop.DataBean dataBean = shopData.get(groupPosition);
        ParentHolder parentHolder;
        if (convertView == null) {
            convertView = View.inflate(parent.getContext(), R.layout.parent_item, null);
            parentHolder = new ParentHolder(convertView);
            convertView.setTag(parentHolder);
        } else {
            parentHolder = (ParentHolder) convertView.getTag();
        }
        //P2.获取商家名称
        parentHolder.textParent.setText(dataBean.getSellerName());
        //P3.根据当前商家的所有商品,确定checkbox是否选中
        boolean parentAllSelect = isParentAllSelect(groupPosition);
        //P4.1根据boolean判断是否选中
        parentHolder.boxParent.setChecked(parentAllSelect);
        //P5.设置点击checkbox的点击事件,接口回调
        parentHolder.boxParent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mOnCartListChangeListener != null) {
                    mOnCartListChangeListener.onParentCheckedChange(groupPosition);
                }
            }
        });
        return convertView;
    }
    ////////////C.子布局///////////
    @Override
    public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        Shop.DataBean dataBean = shopData.get(groupPosition);
        List<Shop.DataBean.ListBean> list = dataBean.getList();
        //C1.拿到list集合里具体商品
        Shop.DataBean.ListBean listBean = list.get(childPosition);
        ChildHolder childHolder;
        if (convertView == null) {
            convertView = View.inflate(parent.getContext(), R.layout.child_item, null);
            //   convertView = View.inflate(parent.getContext(), R.layout.child_item, null);
            childHolder = new ChildHolder(convertView);
            convertView.setTag(childHolder);
        } else {
            childHolder = (ChildHolder) convertView.getTag();
        }
        //C2.截取图片picasso
        String images = listBean.getImages();
        String[] strings = images.split("!");
        Picasso.with(parent.getContext()).load(strings[0]).into(childHolder.imageChild);
        //C.获取商品名称
        childHolder.childText.setText(listBean.getTitle());
        //C.单价
        childHolder.childPrice.setText(listBean.getPrice() + "");
        //C.设置子条目复选框是否选中
        childHolder.boxChild.setChecked(listBean.getSelected() == 1);
        //C.设置加减器内部数量
        childHolder.addSub.setNumber(listBean.getNum());

        //C3.设置商品checkbox的点击事件,接口回调
        childHolder.boxChild.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mOnCartListChangeListener != null) {
                    mOnCartListChangeListener.onChildCheckedChange(groupPosition, childPosition);
                }
            }
        });

        //C4.设置加减器的点击事件,接口回调
        childHolder.addSub.setOnNumberChangeInterface(new MyAddSub.OnNumberChangeInterface() {
            @Override
            public void onNumberChang(int num) {
                if (mOnCartListChangeListener != null) {
                    mOnCartListChangeListener.onAddSubNumberChange(groupPosition, childPosition, num);
                }
            }
        });

        return convertView;
    }

    //--------判断当前商品是否被选中--------
    public boolean isParentAllSelect(int groupPosition) {
        //拿到组的数据
        Shop.DataBean dataBean = shopData.get(groupPosition);
        //拿到商家所有商品,集合
        List<Shop.DataBean.ListBean> list = dataBean.getList();
        for (int i = 0; i < list.size(); i++) {
            //判断这个组所有商品是否被选中,如有一个未选中就都不选中
            if (list.get(i).getSelected() == 0) {
                return false;
            }
        }
        return true;
    }

    //------底部全选按钮逻辑判断------
    public boolean isAllSelected() {
        for (int i = 0; i < shopData.size(); i++) {
            Shop.DataBean dataBean = shopData.get(i);
            List<Shop.DataBean.ListBean> list = dataBean.getList();
            for (int j = 0; j < list.size(); j++) {
                //判断组的商品是否被选中
                if (list.get(j).getSelected() == 0) {
                    return false;
                }
            }
        }
        return true;
    }

    //-----计算商品总数量-----
    public int TotalNumber() {
        int totalNumber = 0;
        for (int i = 0; i < shopData.size(); i++) {
            Shop.DataBean dataBean = shopData.get(i);
            List<Shop.DataBean.ListBean> list = dataBean.getList();
            for (int j = 0; j < list.size(); j++) {
                //商品数量,选中的
                if (list.get(j).getSelected() == 1) {
                    //拿到商品的数量
                    int num = list.get(j).getNum();
                    totalNumber += num;
                }
            }
        }
        return totalNumber;
    }

    //-------计算商品总价格-------
    public float TotalPrice() {
        float totalPrice = 0;
        for (int i = 0; i < shopData.size(); i++) {
            Shop.DataBean dataBean = shopData.get(i);
            List<Shop.DataBean.ListBean> list = dataBean.getList();
            for (int j = 0; j < list.size(); j++) {
                //商品价格,选中的
                if (list.get(j).getSelected() == 1) {
                    //拿到商品数量
                    price = list.get(j).getPrice();
                    num = (int) (list.get(j).getNum() * price);
                    totalPrice += num;
                }
            }
        }
        return totalPrice;
    }

    //--------根据选择,更改选框里状态------
    public void changeSellerAllProduct(int groupPosition, boolean isSelected) {
        Shop.DataBean dataBean = shopData.get(groupPosition);
        List<Shop.DataBean.ListBean> list = dataBean.getList();
        for (int i = 0; i < list.size(); i++) {
            Shop.DataBean.ListBean listBean = list.get(i);
            listBean.setSelected(isSelected ? 1 : 0);
        }
    }

    //---------当子条目选中,更新组选框的状态-------
    public void changeChild(int groupPosition, int childPosition) {
        Shop.DataBean dataBean = shopData.get(groupPosition);
        List<Shop.DataBean.ListBean> list = dataBean.getList();
        Shop.DataBean.ListBean listBean = list.get(childPosition);
        listBean.setSelected(listBean.getSelected() == 0 ? 1 : 0);
    }

    //---------当最底部全选框选中,更新所有选框的状态
    public void changAllCheckBox(boolean selected) {
        for (int i = 0; i < shopData.size(); i++) {
            Shop.DataBean dataBean = shopData.get(i);
            List<Shop.DataBean.ListBean> list = dataBean.getList();
            for (int j = 0; j < list.size(); j++) {
                list.get(j).setSelected(selected ? 1 : 0);
            }
        }
    }

    //----------当加减器被点击时,改变商品数量--------
    public void changProductNumber(int groupPosition, int childPosition, int number) {
        Shop.DataBean dataBean = shopData.get(groupPosition);
        List<Shop.DataBean.ListBean> list = dataBean.getList();
        Shop.DataBean.ListBean listBean = list.get(childPosition);
        listBean.setNum(number);
    }

    //==============Viewhodler============
    //组的Viewholder
    public static class ParentHolder {

        private final CheckBox boxParent;
        private final TextView textParent;

        public ParentHolder(View rootView) {
            boxParent = rootView.findViewById(R.id.box_parent);
            textParent = rootView.findViewById(R.id.text_parent);
        }
    }

    public static class ChildHolder {

        private final CheckBox boxChild;
        private final ImageView imageChild;
        private final TextView childText;
        private final TextView childPrice;
        private final MyAddSub addSub;

        public ChildHolder(View rootView) {
            boxChild = rootView.findViewById(R.id.child_box);
            imageChild = rootView.findViewById(R.id.child_image);
            childText = rootView.findViewById(R.id.child_text);
            childPrice = rootView.findViewById(R.id.child_price);
            addSub = rootView.findViewById(R.id.add_sub);
        }
    }

    //=============创建接口===========
    public interface onCartListChangeListener {
        /*当组的checkbox点击时回调*/
        void onParentCheckedChange(int groupPosition);

        /*当点击子条目商品的checkbox回调*/
        void onChildCheckedChange(int groupPosition, int childPosition);

        /*当点击加减按钮的回调*/
        void onAddSubNumberChange(int groupPosition, int childPosition, int number);
    }

    private onCartListChangeListener mOnCartListChangeListener;

    public void setOnCartListChangeListener(onCartListChangeListener onCartListChangeListener) {
        mOnCartListChangeListener = onCartListChangeListener;
    }

    //不管这些
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }

    @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 hasStableIds() {
        return false;
    }
}

猜你喜欢

转载自blog.csdn.net/LG_lxb/article/details/85135992