Android实现购物车功能

2019-12-10 19:09:18王振洲
这篇文章主要为大家详细介绍了Android实现购物车功能的具体方法,具有一定的参考价值,需要的朋友可以参考下  

最近看了一些淘宝购物车的demo,于是也写了一个。

效果图如下: 

Android实现购物车功能

主要代码如下: 
actvity中的代码:

 

public class ShoppingCartActivity extends BaseActivity {

  private List<Test> data;
  private ListView mListView;
  private ShoppingCartAdapter adapter;

  private RelativeLayout rlRefresh;
  private TextView tvRefresh;
  private ProgressBar barRefresh;
  private LinearLayout clear;
  private CheckBox checkBox_select_all;
  private CheckBox checkBox_add;
  private TextView integral_sum;
  private int sum = 0;
  private int[] sumIntegral;
  private Context context;

  @Override
  protected void onCreate(Bundle bundle) {
    // TODO Auto-generated method stub
    super.onCreate(bundle);
    setContentView(R.layout.activity_shopping_cart);
    initView();
  }

  private void initView() {
    context = this;
    showpage = 1;
    isPermitFlag = true;
    data = new ArrayList<Test>();
    // 测试数据
    data.add(new Test("id", "color", "type", "100"));
    data.add(new Test("id", "color", "type", "200"));
    data.add(new Test("id", "color", "type", "300"));
    data.add(new Test("id", "color", "type", "0"));
    data.add(new Test("id", "color", "type", "300"));
    data.add(new Test("id", "color", "type", "100"));
    data.add(new Test("id", "color", "type", "500"));
    data.add(new Test("id", "color", "type", "0"));
    data.add(new Test("id", "color", "type", "900"));

    adapter = new ShoppingCartAdapter(context, handler, data);

    sumIntegral = new int[data.size() + 1];

    checkBox_add = (CheckBox) findViewById(R.id.checkbox_add);
    integral_sum = (TextView) findViewById(R.id.integral_sum);
    clear = (LinearLayout) findViewById(R.id.clear);
    clear.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {
        data.clear();
        adapter.notifyDataSetChanged();
        integral_sum.setText(0 + "");
        checkBox_select_all.setChecked(false);
        checkBox_add.setClickable(false);
      }
    });
    checkBox_select_all = (CheckBox) findViewById(R.id.checkbox_select);
    checkBox_select_all.setOnClickListener(new OnClickListener() {

      @Override
      public void onClick(View v) {

        HashMap<Integer, Boolean> isSelected = ShoppingCartAdapter
            .getIsSelected();
        Iterator iterator = isSelected.entrySet().iterator();
        List<Boolean> array = new ArrayList<Boolean>();//列表中checkbox选中状态
        List<Integer> nums = new ArrayList<Integer>();//列表中商品数量
        while (iterator.hasNext()) {
          HashMap.Entry entry = (HashMap.Entry) iterator.next();
          Integer key = (Integer) entry.getKey();
          Boolean val = (Boolean) entry.getValue();
          array.add(val);
        }
        for (int i = 0; i < data.size(); i++) {
          int num = data.get(i).getNum();
          int integral = Integer.valueOf(data.get(i).getIntegral());
          nums.add(num);
        }
        if (checkBox_select_all.isChecked()) {

          for (int i = 0; i < data.size(); i++) {
            ShoppingCartAdapter.getIsSelected().put(i, true);
          }
          checkBox_add.setChecked(true);
          adapter.notifyDataSetChanged();
        } else {
          for (int i = 0; i < data.size(); i++) {
            ShoppingCartAdapter.getIsSelected().put(i, false);
          }
          checkBox_add.setChecked(false);
          adapter.notifyDataSetChanged();
          integral_sum.setText(0 + "");
        }

      }
    });
    mListView= (ListView) findViewById(R.id.finance_list);
    mListView.setAdapter(adapter);
    mListView.setOnItemClickListener(new OnItemClickListener() {

      @Override
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {
        Toast.makeText(context, position + "", Toast.LENGTH_LONG)
            .show();

        int pos = position - 1;
        ViewHolder viewHolder = (ViewHolder) view.getTag();
        int num = data.get(pos).getNum();
        if (num == 0) {
          Toast.makeText(context, "请选择商品数量", Toast.LENGTH_LONG)
              .show();
        } else {
          boolean cu = !ShoppingCartAdapter.getIsSelected().get(pos);
          ShoppingCartAdapter.getIsSelected().put(pos, cu);
          adapter.notifyDataSetChanged();
          //遍历获取列表中checkbox的选中状态
          HashMap<Integer, Boolean> isSelected = ShoppingCartAdapter
              .getIsSelected();
          Iterator iterator = isSelected.entrySet().iterator();
          List<Boolean> array = new ArrayList<Boolean>();
          while (iterator.hasNext()) {
            HashMap.Entry entry = (HashMap.Entry) iterator.next();
            Integer key = (Integer) entry.getKey();
            Boolean val = (Boolean) entry.getValue();
            array.add(val);
          }
          if (Test.isAllFalse(array)) {
            checkBox_select_all.setChecked(false);
            checkBox_add.setChecked(false);
          }
          if (Test.isAllTrue(array)) {
            checkBox_select_all.setChecked(true);
            checkBox_add.setChecked(true);
          }
          if (Test.isHaveOneFasle(array)) {
            checkBox_select_all.setChecked(false);
          }
          if (Test.isHaveOneTrue(array)) {
            checkBox_add.setChecked(true);
          }
        }
      }
    });
  }

  @SuppressLint("HandlerLeak")
  private Handler handler = new Handler(){
    @SuppressWarnings("unchecked")
    @Override
    public void handleMessage(Message msg) {
      super.handleMessage(msg);
      if(msg.what == 10){ //更改选中商品的总价格
        float price = (Float)msg.obj;
        if(price > 0){
          integral_sum.setText(price+"");
        }else{
          integral_sum.setText("0");
        }
      }
      else if(msg.what == 11){
        //列表选中状态
        List<Boolean> array = (List<Boolean>) msg.obj;
        if (Test.isAllFalse(array)) {
          checkBox_select_all.setChecked(false);
          checkBox_add.setChecked(false);
        }
        if (.isAllTrue(array)) {
          checkBox_select_all.setChecked(true);
          checkBox_add.setChecked(true);
        }
        if (Test.isHaveOneFasle(array)) {
          checkBox_select_all.setChecked(false);
        }
        if (Test.isHaveOneTrue(array)) {
          checkBox_add.setChecked(true);
        }
      }
    }
  };