gwc

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:orientation="horizontal"
    android:padding="2dp"
    android:layout_gravity="center_vertical"
    android:layout_height="30dp">

    <TextView
        android:id="@+id/delete_tv"
        android:gravity="center"
        android:text="-"
        android:textSize="@dimen/sp_14"
        android:textColor="#666666"
        android:layout_width="@dimen/dp_12"
        android:layout_height="match_parent" />
    <TextView
        android:id="@+id/product_number_tv"
        android:layout_marginLeft="2dp"
        android:layout_weight="1"
        android:background="#dddddd"
        android:gravity="center"
        android:textSize="@dimen/sp_12"
        android:text="1"
        android:layout_width="@dimen/dp_31"
        android:layout_height="@dimen/dp_18" />
    <TextView
        android:id="@+id/add_tv"
        android:gravity="center"
        android:text="+"
        android:textSize="@dimen/sp_14"
        android:layout_width="@dimen/dp_12"
        android:layout_height="match_parent" />

</LinearLayout>
public class CountView extends RelativeLayout implements View.OnClickListener {
    private int mnumber = 0;
    private TextView send_count_minus;
    private TextView send_count_number;
    private TextView send_count_plus;

    public CountView(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater.from(context).inflate(R.layout.add_remove_view, this);
        initView();
    }

    private void initView() {
        send_count_minus = findViewById(R.id.delete_tv);
        send_count_number = findViewById(R.id.product_number_tv);
        send_count_plus = findViewById(R.id.add_tv);
        send_count_minus.setOnClickListener(this);
        send_count_plus.setOnClickListener(this);
    }

    public void setNumber(int number) {
        mnumber = number;
        send_count_number.setText(mnumber + "");
    }
    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.delete_tv:
                if (mnumber > 0) {
                    mnumber--;
                    send_count_number.setText(mnumber + "");
                    if (onChangeNumber != null) {
                        onChangeNumber.getNumber(mnumber);
                    }
                }
                break;
            case R.id.add_tv:
                mnumber++;
                send_count_number.setText(mnumber + "");
                if (onChangeNumber != null) {
                    onChangeNumber.getNumber(mnumber);
                }
                break;
        }
    }

    public interface OnChangeNumber {
        void getNumber(int number);
    }

    private OnChangeNumber onChangeNumber;

    public void setOnChangeNumber(OnChangeNumber onChangeNumber) {
        this.onChangeNumber = onChangeNumber;
    }
}
public class GwcAdapter extends RecyclerView.Adapter<GwcAdapter.ViewHolder> {
    private List<Querygwc.ResultBean> list = new ArrayList<>();
    private Context context;

    public GwcAdapter(List<Querygwc.ResultBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        ViewHolder holder = null;
        View view = LayoutInflater.from(context).inflate(R.layout.gou_item,parent,false);
        holder = new ViewHolder(view);


        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        Glide.with(context).load(list.get(position).getPic()).into(holder.gou_item_img);
        holder.gou_item_name.setText(list.get(position).getCommodityName());
        holder.gou_item_price.setText("¥"+list.get(position).getPrice()+".00");
        holder.item_count.setNumber(list.get(position).getCount());
        holder.gou_item_check.setChecked(list.get(position).isChildCheck());


        holder.gou_item_check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (onItemClick != null) {
                    onItemClick.onClick(view, position);
                }
            }
        });
        holder.item_count.setOnChangeNumber(new CountView.OnChangeNumber() {
            @Override
            public void getNumber(int number) {
                if (onItemClick != null) {
                    onItemClick.onNumber(position, number);
                }
            }
        });
        holder.delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (onItemClick != null) {
                    onItemClick.onDelete(view, position);
                }
            }
        });



    }

    @Override
    public int getItemCount() {
        return list.size();
    }
    public void setCheckStatus(int position, boolean status) {
        list.get(position).setChildCheck(status);
    }

    public boolean thisCheckStatus(int position) {
        boolean childCheck = list.get(position).isChildCheck();
        if (childCheck) {
            return true;
        } else {
            return false;
        }
    }

    public boolean thisShopStatus() {
        for (int i = 0; i < list.size(); i++) {
            boolean childCheck = list.get(i).isChildCheck();
            if (childCheck) {
                return true;
            }
        }
        return false;
    }

    //所有的checkbox的状态
    public boolean allCheckStatus() {
        for (int i = 0; i < list.size(); i++) {
            boolean childCheck = list.get(i).isChildCheck();
            if (!childCheck) {
                return false;
            }
        }
        return true;
    }

    public void setAllCheckStatus(boolean status) {
        for (int i = 0; i < list.size(); i++) {
            list.get(i).setChildCheck(status);
        }
    }

    public double getAllPrice() {
        int mprice = 0;
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).isChildCheck()) {
                mprice += list.get(i).getPrice() * list.get(i).getCount();
            }
        }
        return mprice;
    }

    public int getAllCount() {
        int mcount = 0;
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).isChildCheck()) {
                mcount += list.get(i).getCount();
            }
        }
        return mcount;
    }

    public void setShopCount(int position, int number) {
        list.get(position).setCount(number);
    }

    public interface OnItemClick {
        void onClick(View view, int position);

        void onDelete(View view, int position);

        void onNumber(int position, int number);
    }

    private OnItemClick onItemClick;

    public void setOnItemClick(OnItemClick onItemClick) {
        this.onItemClick = onItemClick;
    }


    public class ViewHolder extends RecyclerView.ViewHolder {
        private CheckBox gou_item_check;
        private ImageView gou_item_img;
        private TextView gou_item_name;
        private TextView gou_item_price;
        private Button delete;
        CountView item_count;
        public ViewHolder(View itemView) {
            super(itemView);
            gou_item_check = itemView.findViewById(R.id.gou_item_check);
            gou_item_img = itemView.findViewById(R.id.gou_item_img);
            gou_item_name = itemView.findViewById(R.id.gou_item_name);
            gou_item_price = itemView.findViewById(R.id.gou_item_price);
            item_count = itemView.findViewById(R.id.item_count);
            delete = itemView.findViewById(R.id.item_delete);

        }
    }
}
public class GouFragment<T> extends Fragment implements IView<T>, View.OnClickListener {


    @BindView(R.id.query_gwc)
    RecyclerView queryGwc;
    @BindView(R.id.check)
    CheckBox check;
    @BindView(R.id.gou_heji)
    TextView gouHeji;
    @BindView(R.id.js)
    TextView js;
    Unbinder unbinder;
    private ShouPresenterImpl presenter;
    private GwcAdapter adapter;
    private SharedPreferences sp;

    private List<Querygwc.ResultBean> mList = new ArrayList<>();

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_gou, container, false);
        unbinder = ButterKnife.bind(this, view);
        sp = getActivity().getSharedPreferences("ischeck", Context.MODE_PRIVATE);
        presenter = new ShouPresenterImpl(this);
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        queryGwc.setLayoutManager(layoutManager);
        Map<String,String> headmap = new HashMap<>();
        int userId = sp.getInt("userId",0);
        String sessionId = sp.getString("sessionId",null);
        headmap.put("userId",userId+"");
        headmap.put("sessionId",sessionId);
        adapter = new GwcAdapter(mList,getActivity());
        queryGwc.setAdapter(adapter);
        Map<String,Object> map = new HashMap<>();
        presenter.startShoushop(Contacts.GWC_QUERY,null,headmap,Querygwc.class);

        js.setOnClickListener(this);
        adapter.setOnItemClick(new GwcAdapter.OnItemClick() {
            @Override
            public void onClick(View view, int position) {
                boolean status = adapter.thisCheckStatus(position);
                adapter.setCheckStatus(position, !status);
                adapter.notifyDataSetChanged();
                FlushFooter();
            }

            @Override
            public void onDelete(View view, int position) {
                mList.remove(position);
                adapter.notifyDataSetChanged();
                FlushFooter();
            }

            @Override
            public void onNumber(int position, int number) {
                adapter.setShopCount(position, number);
                adapter.notifyDataSetChanged();
                FlushFooter();
            }
        });
        check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                boolean status = adapter.allCheckStatus();
                adapter.setAllCheckStatus(!status);
                check.setChecked(!status);
                adapter.notifyDataSetChanged();
                FlushFooter();
            }
        });

        return view;
    }
    private void FlushFooter() {
        boolean status = adapter.allCheckStatus();
        check.setChecked(status);
        double allPrice = adapter.getAllPrice();
        gouHeji.setText("¥" + allPrice);
    }




    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }

    @Override
    public void success(T data) {
        Querygwc querygwc = (Querygwc) data;
        mList.clear();
        mList.addAll(querygwc.getResult());
        adapter.notifyDataSetChanged();


    }

    @Override
    public void error(T error) {

    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.js:
                Intent intent = new Intent(getActivity(), TijiaoActivity.class);
                List<Submit> list = new ArrayList<>();
                for (int i = 0; i < mList.size(); i++) {
                    if (mList.get(i).isChildCheck() == true) {
                        Submit bean = new Submit(mList.get(i).getCommodityId(), mList.get(i).getCount(), mList.get(i)
                                .getCommodityName(), mList.get(i).getCount(), mList.get(i).getPic(), mList.get(i).getPrice());
                        list.add(bean);
                    }
                }
                intent.putParcelableArrayListExtra("submit", (ArrayList<? extends Parcelable>) list);
                startActivity(intent);
                break;
        }
    }
}

二级:

public class MyAdapter extends BaseExpandableListAdapter {
 private List<MyData.DataBean> list;
 private Context context;
  
 public MyAdapter(List<MyData.DataBean> list, Context context) {
 this.list = list;
 this.context = context;
 }
  
 @Override
 public int getGroupCount() {
 return list.size();
 }
  
 @Override
 public int getChildrenCount(int i) {
 return list.get(i).getSpus().size();
 }
  
 @Override
 public Object getGroup(int i) {
 return null;
 }
  
 @Override
 public Object getChild(int i, int i1) {
 return null;
 }
  
 @Override
 public long getGroupId(int i) {
 return 0;
 }
  
 @Override
 public long getChildId(int i, int i1) {
 return 0;
 }
  
 @Override
 public boolean hasStableIds() {
 return false;
 }
  
 @Override
 public View getGroupView(final int i, boolean b, View view, ViewGroup viewGroup) {
 GroupHolder groupHolder = null;
 if (view == null){
 groupHolder = new GroupHolder();
 view = View.inflate(context,R.layout.group_list,null);
 groupHolder.mGroupCheck = view.findViewById(R.id.group_cb);
 groupHolder.mGroupTv = view.findViewById(R.id.group_name);
 view.setTag(groupHolder);
 }else{
 groupHolder = (GroupHolder) view.getTag();
 }
 MyData.DataBean dataBean = list.get(i);
 groupHolder.mGroupTv.setText(dataBean.getName()+"");
 boolean childAllCheck = isChildAllCheck(i);
 groupHolder.mGroupCheck.setChecked(childAllCheck);
 groupHolder.mGroupCheck.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View view) {
 if (adapterCallback!= null){
 adapterCallback.setGroupCheck(i);
 }
 }
 });
 return view;
 }
  
 @Override
 public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {
 ChildHolder childHolder = null;
 if (view == null){
 childHolder = new ChildHolder();
 view = View.inflate(context,R.layout.child_item,null);
 childHolder.mChildTitle = view.findViewById(R.id.chile_title);
 childHolder.mChildPrice = view.findViewById(R.id.chile_price);
 childHolder.mChildCheck = view.findViewById(R.id.child_check);
 childHolder.mImage = view.findViewById(R.id.child_icon);
 childHolder.jiaJianView = view.findViewById(R.id.jia_jian_view);
 view.setTag(childHolder);
 }else {
 childHolder = (ChildHolder) view.getTag();
 }
 MyData.DataBean.SpusBean spusBean = list.get(i).getSpus().get(i1);
 Glide.with(context).load(spusBean.getPic_url()).into(childHolder.mImage);
 childHolder.mChildTitle.setText(spusBean.getName()+"");
 childHolder.mChildPrice.setText(spusBean.getSkus().get(0).getPrice()+"");
 childHolder.mChildCheck.setChecked(spusBean.isChildChecked());
 childHolder.jiaJianView.setNumber(spusBean.getPraise_num());
 childHolder.mChildCheck.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View view) {
 if (adapterCallback!= null){
 adapterCallback.setChildCheck(i,i1);
 }
 }
 });
 childHolder.jiaJianView.setOnChange(new JiaJianView.onCountChange() {
 @Override
 public void setCount(int count) {
 if (adapterCallback != null) {
 adapterCallback.setNumber(i, i1, count);
 }
 }
 });
  
 return view;
 }
  
 @Override
 public boolean isChildSelectable(int i, int i1) {
 return false;
 }
 class GroupHolder{
 private CheckBox mGroupCheck;
 private TextView mGroupTv;
 }
 class ChildHolder{
 private CheckBox mChildCheck;
 private TextView mChildTitle;
 private ImageView mImage;
 private TextView mChildPrice;
 private JiaJianView jiaJianView;
 }
  
 //点击group的CheckBox让所有child选中
 public void childAllCheck(int groupPosition,boolean isCheck){
 MyData.DataBean dataBean = list.get(groupPosition);
 List<MyData.DataBean.SpusBean> spus = dataBean.getSpus();
 for (int i = 0;i<spus.size();i++){
 MyData.DataBean.SpusBean bean = spus.get(i);
 bean.setChildChecked(isCheck);
 }
 }
 //用来判断小组是否全被选中
 public boolean isChildAllCheck(int groupPosition){
 boolean boo = true;
 MyData.DataBean dataBean = list.get(groupPosition);
 List<MyData.DataBean.SpusBean> spus = dataBean.getSpus();
 for (int i = 0; i < spus.size(); i++) {
 MyData.DataBean.SpusBean bean = spus.get(i);
 //只要有一个没有被选中 点这个CheckBox就是全选的功能
 if (!bean.isChildChecked()) {
 return false;
 }
 }
 return boo;
 }
 //点击child给他进行赋值
 public void setChildCheck(int groupPosition,int childPosition,boolean isCheckBox){
 MyData.DataBean.SpusBean spusBean = list.get(groupPosition).getSpus().get(childPosition);
 spusBean.setChildChecked(isCheckBox);
 }
 //查看当前这个商品有没有被选中
 public boolean isChildChecked(int groupPositon,int childPosition){
 MyData.DataBean.SpusBean spusBean = list.get(groupPositon).getSpus().get(childPosition);
 if (spusBean.isChildChecked()){
 return true;
 }
 return false;
 }
 //给商品数量进行赋值
 public void setShangPingNumber(int groupPosition,int childPosition,int number){
 MyData.DataBean.SpusBean spusBean = list.get(groupPosition).getSpus().get(childPosition);
 spusBean.setPraise_num(number);
  
 }
 //因为咱们底部视图有个一全选和反选
 public boolean isAllGoods(){
 boolean boo = true;
 for (int i = 0; i <list.size() ; i++) {
 MyData.DataBean dataBean = list.get(i);
 for (int j = 0; j <dataBean.getSpus().size() ; j++) {
 MyData.DataBean.SpusBean spusBean = dataBean.getSpus().get(j);
 if (!spusBean.isChildChecked()){
 boo = false;
 }
 }
 }
 return boo;
 }
 //全选反选功能
 public void setAllGoodsIsChecked(boolean isAllCheck){
 for (int i = 0; i <list.size() ; i++) {
 MyData.DataBean dataBean = list.get(i);
 for (int j = 0; j <dataBean.getSpus().size() ; j++) {
 MyData.DataBean.SpusBean spusBean = dataBean.getSpus().get(j);
 spusBean.setChildChecked(isAllCheck);
 }
  
 }
 }
 //计算所有商品的价格
 public float getAllGoodsPrice(){
 float allPrice = 0;
 for (int i = 0; i <list.size() ; i++) {
 MyData.DataBean dataBean = list.get(i);
 for (int j = 0; j <dataBean.getSpus().size() ; j++) {
 MyData.DataBean.SpusBean spusBean = dataBean.getSpus().get(j);
 if (spusBean.isChildChecked()){
 allPrice = allPrice+spusBean.getPraise_num() * Float.parseFloat(spusBean.getSkus().get(0).getPrice());
 }
 }
 }
 return allPrice;
 }
 //计算所有商品的数量
 public int getAllGoodsNumber(){
 int allNumber = 0;
 for (int i = 0; i <list.size() ; i++) {
 MyData.DataBean dataBean = list.get(i);
 for (int j = 0; j <dataBean.getSpus().size() ; j++) {
 MyData.DataBean.SpusBean spusBean = dataBean.getSpus().get(j);
 if (spusBean.isChildChecked()){
 allNumber = allNumber + spusBean.getPraise_num();
 }
 }
 }
 return allNumber;
 }
 public interface AdapterCallback {
 void setGroupCheck(int groupPosition);
  
 void setChildCheck(int groupPosition, int childPosition);
  
 //点击加减按钮刷新
 void setNumber(int groupPosition, int childPosition, int number);
  
 }
  
 private AdapterCallback adapterCallback;
  
 public void setCallback(AdapterCallback adapterCallback) {
 this.adapterCallback = adapterCallback;
 }
  
 

}

 

 

public class MainActivity extends AppCompatActivity {
  
 private CheckBox Check_All;
 private TextView All_Price;
 private TextView Go_To_JS;
 private ExpandableListView Expand_View;
 private List<MyData.DataBean> mList = new ArrayList<>();
 private String mUrl = "http://www.wanandroid.com/tools/mockapi/6523/restaurant-list";
 private MyAdapter mAdapter;
 private Handler handler = new Handler(){
 @Override
 public void handleMessage(Message msg) {
 String jsonStr = (String) msg.obj;
 Gson gson = new Gson();
 MyData myData = gson.fromJson(jsonStr,MyData.class);
 mList.addAll(myData.getData());
 mAdapter.notifyDataSetChanged();
 }
 };
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 initView();
 mAdapter = new MyAdapter(mList,this);
 Expand_View.setAdapter(mAdapter);
 List<MyData.DataBean> list = new ArrayList<>();
 for (int i = 0; i <list.size() ; i++) {
 Expand_View.expandGroup(i);
 }
 getNetData();
 mAdapter.setCallback(new MyAdapter.AdapterCallback() {
 @Override
 public void setGroupCheck(int groupPosition) {
 boolean childAllCheck = mAdapter.isChildAllCheck(groupPosition);
 mAdapter.childAllCheck(groupPosition,!childAllCheck);
 mAdapter.notifyDataSetChanged();
 flushBottomLayout();
 }
  
 @Override
 public void setChildCheck(int groupPosition, int childPosition) {
 boolean childAllCheck = mAdapter.isChildChecked(groupPosition,childPosition);
 mAdapter.setChildCheck(groupPosition,childPosition,!childAllCheck);
 mAdapter.notifyDataSetChanged();
  
 flushBottomLayout();
 }
  
 @Override
 public void setNumber(int groupPositon, int childPosition, int number) {
 mAdapter.setShangPingNumber(groupPositon,childPosition,number);
 mAdapter.notifyDataSetChanged();
 flushBottomLayout();
 }
 });
 Check_All.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View view) {
 boolean allGoods = mAdapter.isAllGoods();
 mAdapter.setAllGoodsIsChecked(!allGoods);
 mAdapter.notifyDataSetChanged();
 flushBottomLayout();
 }
 });
 }
  
  
  
  
 private void initView() {
 Check_All = (CheckBox) findViewById(R.id.check_All);
 All_Price = (TextView) findViewById(R.id.All_price);
 Go_To_JS = (TextView) findViewById(R.id.go_to_js);
 Expand_View = (ExpandableListView) findViewById(R.id.Expand_view);
 //去掉自带的小箭头
 Expand_View.setGroupIndicator(null);
 }
 private void getNetData() {
 OkHttpClient okHttpClient = new OkHttpClient();
 Request request = new Request.Builder().url(mUrl).build();
 okHttpClient.newCall(request).enqueue(new Callback() {
 @Override
 public void onFailure(Call call, IOException e) {
  
 }
  
 @Override
 public void onResponse(Call call, Response response) throws IOException {
 handler.sendMessage(handler.obtainMessage(0,response.body().string()));
 }
 });
  
 }
 private void flushBottomLayout() {
 boolean allGoods = mAdapter.isAllGoods();
 Check_All.setChecked(allGoods);
 float allGoodsPrice = mAdapter.getAllGoodsPrice();
 int allGoodsNumber = mAdapter.getAllGoodsNumber();
 All_Price.setText("价格:"+allGoodsPrice);
 Go_To_JS.setText("去结算("+allGoodsNumber+")");
 }
  
 }

 

 


 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值