栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Listvie简单实现购物车功能

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Listvie简单实现购物车功能

本文实例为大家分享了Listvie简单实现购物车的具体代码,供大家参考,具体内容如下

1.自定义view实现加减

public class MyView extends LinearLayout implements View.onClickListener {
 
  private onAmountChangeListener mListener;
  private int count;
  private TextView numText;
 
  public MyView(Context context) {
    this(context,null);
  }
 
  public MyView(Context context, @Nullable AttributeSet attrs) {
    this(context, attrs,0);
  }
 
  public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
 
    View view = View.inflate(context, R.layout.add, this);
    initView(view);
 
 
  }
  public void setText(int num){
    numText.setText(""+num);
  }
  public int getText(){
    getTextString();
    return count;
  }
 
  private void initView(View view) {
 
    Button addBtn = view.findViewById(R.id.btn_add);
    Button jianBtn = view.findViewById(R.id.btn_jian);
    numText = view.findViewById(R.id.txt_num);
    getTextString();
    addBtn.setonClickListener(this);
    jianBtn.setonClickListener(this);
  }
 
  public void setonclickNum(onAmountChangeListener mListener){
    this.mListener = mListener;
  }
  @Override
  public void onClick(View view) {
    getTextString();
    switch (view.getId()){
      case R.id.btn_add:
 count++;
 break;
      case R.id.btn_jian:
 if(count>0){
   count--;
 }
 break;
    }
    numText.setText(""+count);
    if(mListener!=null) {
      mListener.onAmountChange(view, count);
    }
  }
 
  public void getTextString() {
    String numStr = numText.getText().toString().trim();
    count = Integer.parseInt(numStr);
  }
  public interface onAmountChangeListener {
    void onAmountChange(View view, int amount);
  }
}

2.适配器接口回调

public class MyAdapter extends baseAdapter {
  private List mList;
  private Context context ;
  private GaroupClick garoupClick;
  private int index;
  private CountClick countClick;
 
  public MyAdapter(Context context) {
    this.context = context;
  }
 
  @Override
  public int getCount() {
    return mList.size();
  }
  public void setData(List mList){
    this.mList = mList;
    notifyDataSetChanged();
  }
  @Override
  public Object getItem(int i) {
    return mList.get(i);
  }
 
  @Override
  public long getItemId(int i) {
    return i;
  }
 
  public void setonCountClick(CountClick click){
    this.countClick = click;
  }
  public void setonGroupclick(GaroupClick groupclick){
    this.garoupClick = groupclick;
  }
  @Override
  public View getView(final int i, View view, ViewGroup viewGroup) {
    final ViewHolder holder ;
    if(view==null){
      holder = new ViewHolder();
      view = View.inflate(context, R.layout.item, null);
      holder.childCheck = view.findViewById(R.id.cb_chid_checked);
      holder.txtPrice = view.findViewById(R.id.txt_price);
      holder.myView = view.findViewById(R.id.myview);
      view.setTag(holder);
    }else{
      holder = (ViewHolder)view.getTag();
    }
    final Text text = mList. get(i);
 
    holder.childCheck.setChecked(text.isChoose());
    holder.txtPrice.setText(""+text.getPrice());
    holder.myView.setText(text.getCount());
    holder.myView.setonclickNum(new MyView.onAmountChangeListener() {
      @Override
      public void onAmountChange(View view, int amount) {
 text.setCount(amount);
      }
    });
    boolean checked = holder.childCheck.isChecked();
    if(checked){
      holder.myView.setonclickNum(new MyView.onAmountChangeListener() {
 @Override
 public void onAmountChange(View view, int amount) {
   if(countClick!=null){
     countClick.onNumClick(i,amount);
   }
 }
      });
    }
 
    holder.childCheck.setonClickListener(new View.onClickListener() {
      @Override
      public void onClick(View view) {
 text.setChoose(((CheckBox)view).isChecked());
 
 if(garoupClick!=null){
   garoupClick.onItemClick(i,((CheckBox)view).isChecked());
 }
 
 
      }
    });
    return view;
  }
  class ViewHolder{
    CheckBox childCheck;
    TextView txtPrice;
    MyView myView;
  }
  public interface GaroupClick{
    void onItemClick(int position, boolean isChoose);
  }
  public interface CountClick{
    void onNumClick(int position, int count);
  }
 
 
}

3.调用

public class MainActivity extends AppCompatActivity implements MyAdapter.GaroupClick, MyAdapter.CountClick {
 
  private Button jiesuanBtn;
  private ListView mListView;
  private CheckBox allCheck;
  private TextView priceText;
  private List mList = new ArrayList<>();
  private int numPrice = 0;
  private int count = 0;
  private MyAdapter adapter;
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    initData();
 
 
  }
 
  private void initData() {
    for (int i = 0; i < 30; i++) {
      Text txt = new Text();
      txt.setPrice(20);
      txt.setCount(1);
      mList.add(txt);
    }
 
    adapter = new MyAdapter(this);
    adapter.setData(mList);
    mListView.setAdapter(adapter);
    adapter.setonGroupclick(this);
    adapter.setonCountClick(this);
  }
 
  public boolean isAllChecked(){
    for (Text text : mList) {
      if(!text.isChoose()){//遍历集合,有一个不选return false
 return false;
      }
    }
    return true;
  }
  private void initView() {
    jiesuanBtn = (Button) findViewById(R.id.btn_num);
    mListView = (ListView) findViewById(R.id.listview);
    allCheck = (CheckBox) findViewById(R.id.cb_all_checked);
    priceText = (TextView) findViewById(R.id.txt_price_sum);
    allCheck.setonClickListener(new View.onClickListener() {
      @Override
      public void onClick(View view) {
 if(mList.size()!=0) {
   if(allCheck.isChecked()) {
     for (int i = 0; i < mList.size(); i++) {
mList.get(i).setChoose(true);
adapter.notifyDataSetChanged();
     }
   }else{
     for (int i = 0; i < mList.size(); i++) {
mList.get(i).setChoose(false);
adapter.notifyDataSetChanged();
     }
   }
   upDate();
 }
      }
 
    });
 
    jiesuanBtn.setonClickListener(new View.onClickListener() {
      @Override
      public void onClick(View view) {
 Intent intent = new Intent(MainActivity.this, PayDemoActivity.class);
 startActivity(intent);
      }
    });
  }
 
  private void upDate() {
    numPrice = 0;
    count = 0;
    for (int i = 0; i < mList.size(); i++) {
      Text text = mList.get(i);
      if(text.isChoose()){
 count++;
 numPrice += text.getPrice()*text.getCount();
      }
    }
    jiesuanBtn.setText("结算("+count+")");
    priceText.setText("合计:"+numPrice);
  }
 
 
  @Override
  public void onItemClick(int position, boolean isChoose) {
    mList.get(position).setChoose(isChoose);
    if(isAllChecked()){
      allCheck.setChecked(true);
    }else{
      allCheck.setChecked(false);
    }
    adapter.notifyDataSetChanged();
    upDate();
  }
 
  @Override
  public void onNumClick(int position, int count) {
    mList.get(position).setCount(count);
    adapter.notifyDataSetChanged();
    upDate();
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/154833.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号