购物车
发布日期:2021-06-27 12:56:11 浏览次数:33 分类:技术文章

本文共 23679 字,大约阅读时间需要 78 分钟。

//mainActivity=========

package com.bwei.model.day20;import android.graphics.PointF;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.ExpandableListView;import android.widget.TextView;import com.bwei.model.day20.adapter.ExpandAdapter;import com.bwei.model.day20.bean.JsonBean;import com.bwei.model.day20.net.OkHttpUtil;import com.bwei.model.day20.unm.AddNumLayout;import com.google.gson.Gson;import java.util.List;public class MainActivity extends AppCompatActivity {    private ExpandableListView mExpandView;    private String urlPath = "http://120.27.23.105/product/getCarts?source=android&uid=99";    private ExpandAdapter mAdapter;    private List
mData; private CheckBox txtQaxa; private TextView txtZong, txtJiesuan; private JsonBean.DataBean.ListBean mChild; private AddNumLayout onNumChangedListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 initView(); if (mAdapter == null){ //添加适配器 mAdapter = new ExpandAdapter(this); mExpandView.setAdapter(mAdapter); } //初始化网络 initData(); //点击事件 initListener(); } //点击方法 private void setCheckAll(int s){ int itemCount = mAdapter.getGroupCount(); for (int i = 0; i < itemCount; i++) { JsonBean.DataBean item = (JsonBean.DataBean) mAdapter.getGroup(i); List
list = item.getList(); for (int j = 0; j < list.size(); j++) { JsonBean.DataBean.ListBean listBean = list.get(j); listBean.setSelected(s); } } mAdapter.notifyDataSetChanged(); getToal(); } private void initListener() { txtQaxa.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked){ setCheckAll(0); }else { setCheckAll(1); } } }); mExpandView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { JsonBean.DataBean group = (JsonBean.DataBean) mAdapter.getGroup(groupPosition); group.setIschecked(!group.isIschecked()); int c = 1; if (group.isIschecked()){ c = 0; } List
list = group.getList(); for (int i = 0; i < list.size(); i++) { JsonBean.DataBean.ListBean listBean = list.get(i); listBean.setSelected(c); } mAdapter.notifyDataSetChanged(); getToal(); return true; } }); mExpandView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { mChild = (JsonBean.DataBean.ListBean) mAdapter.getChild(groupPosition, childPosition); boolean checked = mChild.isChecked(); if (checked){ mChild.setSelected(0); }else { mChild.setSelected(1); } mAdapter.notifyDataSetChanged(); getToal(); return true; } }); mAdapter.setOnNumChangedListener(new AddNumLayout.OnClickListener() { @Override public void onClick(View v) { getToal(); } }); } private void initData() { //连接okhttp new OkHttpUtil().get(urlPath).setGetData(new OkHttpUtil.GetData() { @Override public void Feast(String s) { Gson gson = new Gson(); JsonBean jsonBean = gson.fromJson(s, JsonBean.class); mData = jsonBean.getData(); mAdapter.setList(mData); //默认展开 for (int i = 0; i < mAdapter.getGroupCount(); i++) { mExpandView.expandGroup(i); } } }); } private void initView() { mExpandView = (ExpandableListView) findViewById(R.id.expand_view); txtQaxa = (CheckBox) findViewById(R.id.txt_qaxa); txtZong = (TextView) findViewById(R.id.txt_zong); txtJiesuan = (TextView) findViewById(R.id.txt_jisuan); } public void getToal() { double total = 0; int groupCount = mAdapter.getGroupCount(); for (int i = 0; i < groupCount; i++) { JsonBean.DataBean item = (JsonBean.DataBean) mAdapter.getGroup(i); List
list = item.getList(); for (int j = 0; j < list.size(); j++) { JsonBean.DataBean.ListBean listBean = list.get(j); boolean checked = listBean.isChecked(); if (!checked){ double price = listBean.getPrice(); total += price * listBean.getNum(); } } } txtZong.setText("合计:"+ total); }}

//适配器adapter

package com.bwei.model.day20.adapter;import android.content.Context;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.bumptech.glide.Glide;import com.bwei.model.day20.R;import com.bwei.model.day20.bean.JsonBean;import com.bwei.model.day20.unm.AddNumLayout;import java.util.ArrayList;import java.util.List;public class ExpandAdapter extends BaseExpandableListAdapter {    private Context mContext;    private List
mList = new ArrayList
(); private View.OnClickListener mOnNumChangedListener; public ExpandAdapter(Context context) { mContext = context; } @Override public int getGroupCount() { return mList.size(); } @Override public int getChildrenCount(int groupPosition) { return mList.get(groupPosition).getList().size(); } @Override public Object getGroup(int groupPosition) { return mList.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return mList.get(groupPosition).getList().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(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { GroupViewHolder groupHolder; if (convertView == null){ convertView = View.inflate(mContext, R.layout.adapter_group, null); groupHolder = new GroupViewHolder(); groupHolder.groupBox = (CheckBox) convertView.findViewById(R.id.group_box); groupHolder.txtName = (TextView) convertView.findViewById(R.id.txt_name); convertView.setTag(groupHolder); }else{ groupHolder = (GroupViewHolder) convertView.getTag(); } groupHolder.txtName.setText(mList.get(groupPosition).getSellerName()); groupHolder.groupBox.setChecked(mList.get(groupPosition).isIschecked()); return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ChildViewHolder childHolder; if (convertView == null){ convertView = View.inflate(mContext, R.layout.adapter_child, null); childHolder = new ChildViewHolder(); childHolder.childBox = (CheckBox) convertView.findViewById(R.id.child_box); childHolder.childImage = (ImageView) convertView.findViewById(R.id.child_image); childHolder.txtTitle = (TextView) convertView.findViewById(R.id.txt_title); childHolder.txtPrice = (TextView) convertView.findViewById(R.id.txt_price); childHolder.sumAddsub = (AddNumLayout) convertView.findViewById(R.id.sum_addsub); convertView.setTag(childHolder); }else { childHolder = (ChildViewHolder) convertView.getTag(); } final JsonBean.DataBean.ListBean listBean = mList.get(groupPosition).getList().get(childPosition); childHolder.childBox.setChecked(listBean.getSelected()==0); childHolder.txtTitle.setText(listBean.getTitle()); childHolder.txtPrice.setText(listBean.getPrice()+ ""); childHolder.sumAddsub.setCurentcount(listBean.getNum()); Glide.with(mContext).load(listBean.getImages().split("\\|")[0]).into(childHolder.childImage); return convertView; } public void setOnNumChangedListener(View.OnClickListener onNumChangedListener) { mOnNumChangedListener = onNumChangedListener; } public void setList(List
list) { mList = list; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } class GroupViewHolder{ public CheckBox groupBox; public TextView txtName; } class ChildViewHolder{ public CheckBox childBox; public ImageView childImage; public TextView txtPrice; public TextView txtTitle; public AddNumLayout sumAddsub; }}

//父类xml

//子类xml

//自定义加减

public class ShoppingNumView extends LinearLayout {    private TextView sumSubtract, sumNmb, sumAdd;    //自动生成    public ShoppingNumView(Context context) {        this( context, null );    }    public ShoppingNumView(Context context, @Nullable AttributeSet attrs) {        this( context, attrs, -1 );    }    public ShoppingNumView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super( context, attrs, defStyleAttr );        initView( context );        initlisetener();    }    private void initView(Context context) {        View view = View.inflate( context, R.layout.shopping_adapter_view, this  );        sumSubtract = (TextView) view.findViewById( R.id.sum_subtract );        sumNmb = (TextView) view.findViewById( R.id.sum_nmb );        sumAdd = (TextView) view.findViewById( R.id.sum_add );        sumNmb.setText( "1" );    }    private void initlisetener() {        sumAdd.setOnClickListener( new OnClickListener() {            @Override            public void onClick(View v) {                add();            }        } );        sumSubtract.setOnClickListener( new OnClickListener() {            @Override            public void onClick(View v) {                Subtract();            }        } );    }    private void add() {        String shu = sumNmb.getText().toString();        int suan = Integer.parseInt( shu );        suan++;        setCurentcount( suan );    }    private void Subtract() {        String shu = sumNmb.getText().toString();        int suan = Integer.parseInt(shu);        if (suan > 1){            suan--;            setCurentcount(suan);        }else {            Toast.makeText(getContext(), "不能再少了", Toast.LENGTH_SHORT).show();        }    }    public int getCurentcount() {        return Integer.parseInt( sumNmb.getText().toString() );    }    public void setCurentcount(int num) {        sumNmb.setText( num+"" );        if (onNumChangedListener != null){            onNumChangedListener.onNumChange( this, num );        }    }    private OnNumChangedListener onNumChangedListener;    public void setOnNumChangedListener(OnNumChangedListener onNumChangedListener) {        this.onNumChangedListener = onNumChangedListener;    }    private interface OnNumChangedListener{        void onNumChange(View view, int curNum);    }}

//加减xml

//RecyclerView ========================================

// Activity

public class MainActivity extends AppCompatActivity implements CarView{    @BindView(R.id.tou)    TextView tou;    @BindView(R.id.car_recycler)    RecyclerView carRecycler;    @BindView(R.id.car_box)    CheckBox carBox;    @BindView(R.id.car_zong)    TextView carZong;    private List
mList = new ArrayList<>(); private CarRecycleAdapter mCarAdapter; private Object mTotal; private List
mChildlist; private TextView carMai; Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage( msg ); switch (msg.what){ case 1: setAdapter(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main ); ButterKnife.bind( this ); carMai = (TextView) findViewById( R.id.car_mai ); //p层 CarPesenter pesenter = new CarPesenter( this ); pesenter.car("71"); } public void setAdapter(){ //设置布局管理器 LinearLayoutManager layoutManager = new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); carRecycler.setLayoutManager(layoutManager); //适配器 mCarAdapter = new CarRecycleAdapter( this, mList); carRecycler.setAdapter(mCarAdapter); //接收接口 mCarAdapter.setOnShopItemClick( new CarRecycleAdapter.OnShopItemClick() { @Override public void onCheckBoxClick(View view, int i) { getTotal(); mCarAdapter.notifyDataSetChanged(); } @Override public void onSubViewClick(View view, int i) { getTotal(); mCarAdapter.notifyDataSetChanged(); } @Override public void onAddViewClick(View view, int i) { getTotal(); mCarAdapter.notifyDataSetChanged(); } } ); } //总价 public void getTotal() { int num = 0; double total = 0; for (int i = 0; i < mList.size(); i++) { List
list = mList.get( i ).getList(); for (int j = 0; j < list.size(); j++) { if (list.get( j ).getSelected()==1){ num += list.get( j ).getNum(); total += list.get( j ).getNum() * list.get( j ).getPrice(); } } } carZong.setText( "合计:¥" +total ); } @OnClick({R.id.tou, R.id.car_recycler, R.id.car_box, R.id.car_zong}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.tou: break; case R.id.car_recycler: break; case R.id.car_box: //全选 for (int i = 0; i < mCarAdapter.getItemCount(); i++) { if (carBox.isChecked()){ mList.get( i ).setIsChecked( 1 ); }else { mList.get( i ).setIsChecked( 0 ); } mChildlist = mList.get( i ).getList(); for (int j = 0; j < mChildlist.size(); j++) { if (carBox.isChecked()){ mChildlist.get( j ).setSelected(1); }else { mChildlist.get( j ).setSelected( 0 ); } } } mCarAdapter.notifyDataSetChanged(); getTotal(); break; case R.id.car_zong: break; } } @Override public void carSuccess(CarBean success) { mList = success.getData(); Toast.makeText( this, mList.toString()+"", Toast.LENGTH_SHORT ).show(); mHandler.sendEmptyMessage( 1 ); } @Override public void carFail(String carfail) { Toast.makeText( this, carfail, Toast.LENGTH_SHORT ).show(); }}

//适配器父布局

public class CarRecycleAdapter extends RecyclerView.Adapter
{ private Context mContext; private List
mList; private CarchildAdapter mChildadapter; public CarRecycleAdapter(Context context, List
list) { mContext = context; mList = list; } //接口回调 private OnShopItemClick mOnShopItemClick; public void setOnShopItemClick(OnShopItemClick onShopItemClick) { this.mOnShopItemClick = onShopItemClick; } public interface OnShopItemClick{ void onCheckBoxClick(View view, int i); void onSubViewClick(View view, int i); void onAddViewClick(View view, int i); } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View view = View.inflate( mContext, R.layout.carfu_adapter, null ); ViewHolder holder = new ViewHolder( view ); return holder; } @Override public void onBindViewHolder(@NonNull ViewHolder viewHolder,final int i) { viewHolder.adapterFuCheck.setText( mList.get( i ).getSellerName()+"" ); int selected = mList.get( i ).getIsChecked(); if (selected == 1){ viewHolder.adapterFuCheck.setChecked( true ); }else { viewHolder.adapterFuCheck.setChecked( false ); } //点击商家选中商品(不好使) viewHolder.adapterFuCheck.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { List
childList = mList.get( i ).getList(); for (int j = 0; j < childList.size(); j++) { childList.get( j ).setSelected( 1 ); } mChildadapter.notifyDataSetChanged(); } } ); //设置布局管理器 LinearLayoutManager layoutManager = new LinearLayoutManager(mContext); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); viewHolder.adapterChildRecyclerView.setLayoutManager(layoutManager); //连接子布局集合 List
list = mList.get( i ).getList(); //适配器 mChildadapter = new CarchildAdapter( mContext, list ); viewHolder.adapterChildRecyclerView.setAdapter( mChildadapter ); //点击接收接口回调 mChildadapter.setOnChildItemClick( new CarchildAdapter.OnChildItemClick() { @Override public void onCheckBoxClick(View view, int i) { mOnShopItemClick.onCheckBoxClick(view, i); } @Override public void onSubViewClick(View view, int i) { mOnShopItemClick.onSubViewClick(view,i); } @Override public void onAddViewClick(View view, int i) { mOnShopItemClick.onAddViewClick(view, i); } } ); } @Override public int getItemCount() { return mList.size(); } public class ViewHolder extends RecyclerView.ViewHolder { private final RecyclerView adapterChildRecyclerView; private final CheckBox adapterFuCheck; public ViewHolder(@NonNull View itemView) { super( itemView ); adapterFuCheck = (CheckBox) itemView.findViewById( R.id.adapter_fuCheck ); adapterChildRecyclerView = (RecyclerView) itemView.findViewById( R.id.adapter_child_recyclerView ); } }}

//子布局

public class CarchildAdapter extends RecyclerView.Adapter
{ private Context mContext; private List
mList; public CarchildAdapter(Context context, List
list) { mContext = context; mList = list; } //接口回调 private OnChildItemClick onChildItemClick; public void setOnChildItemClick(OnChildItemClick onChildItemClick) { this.onChildItemClick = onChildItemClick; } public interface OnChildItemClick { void onCheckBoxClick(View view, int i); void onSubViewClick(View view, int i); void onAddViewClick(View view, int i); } @NonNull @Override public ViewHodel onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View view = View.inflate( mContext, R.layout.carchild_adapter, null ); ViewHodel holder = new ViewHodel( view ); return holder; } @Override public void onBindViewHolder(@NonNull final ViewHodel viewHodel, final int i) { viewHodel.tvGoodsName.setText( mList.get( i ).getTitle() ); viewHodel.tvGoodsPrice.setText( mList.get( i ).getPrice() + "" ); //特殊图片 String images = mList.get( i ).getImages(); String[] spit = images.split( "\\|" ); Glide.with( mContext ).load(spit[0] ).into( viewHodel.adapterChildimage ); viewHodel.tvNum.setText( mList.get( i ).getNum() + "" ); //选择器 viewHodel.adapterChildCheck.setChecked( mList.get( i ).getSelected()== 1 ); //点击选择框 viewHodel.adapterChildCheck.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { int check = mList.get( i ).getSelected(); if (check == 1) { mList.get( i ).setSelected( 0 ); } else { mList.get( i ).setSelected( 1 ); } notifyDataSetChanged(); onChildItemClick.onCheckBoxClick( v, i ); } } ); //点击加减 viewHodel.tvSub.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { int num = mList.get( i ).getNum(); if (num > 1) { num--; mList.get( i ).setNum( num ); } notifyDataSetChanged(); onChildItemClick.onSubViewClick( v, i ); } } ); viewHodel.tvAdd.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { int numadd = mList.get( i ).getNum(); numadd++; mList.get( i ).setNum( numadd ); notifyDataSetChanged(); onChildItemClick.onAddViewClick( v, i ); } } ); } @Override public int getItemCount() { return mList.size(); } public class ViewHodel extends RecyclerView.ViewHolder { private final CheckBox adapterChildCheck; private final ImageView adapterChildimage; private final TextView tvGoodsName, tvGoodsPrice, tvNum, tvSub, tvAdd; public ViewHodel(@NonNull View itemView) { super( itemView ); adapterChildCheck = (CheckBox) itemView.findViewById( R.id.adapter_childCheck ); adapterChildimage = (ImageView) itemView.findViewById( R.id.adapter_childimage ); tvGoodsName = (TextView) itemView.findViewById( R.id.tv_goodsName ); tvGoodsPrice = (TextView) itemView.findViewById( R.id.tv_goodsPrice ); tvSub = (TextView) itemView.findViewById( R.id.tv_sub ); tvNum = (TextView) itemView.findViewById( R.id.tv_num ); tvAdd = (TextView) itemView.findViewById( R.id.tv_add ); } }}

转载地址:https://blog.csdn.net/weixin_43454157/article/details/84334166 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:win10家庭版安装jdk-13
下一篇:跑马灯 圆角搜索框 的实现

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月02日 19时01分47秒