购物车必备全选反选

来源:互联网 发布:胖熊数据库的微博 微博 编辑:程序博客网 时间:2024/06/06 02:15

首先我们先来看下布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout    android:orientation="vertical"    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <CheckBox            android:id="@+id/all"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="全选" />    </LinearLayout>    <TextView        android:id="@+id/price"        android:text="价格"        android:layout_gravity="center"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <ListView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/lv"></ListView></LinearLayout>
适配器中的布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"><CheckBox    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:focusable="false"    android:id="@+id/che"/>    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/tv"/></LinearLayout>
直接上代码

package com.example.myapplication;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.CheckBox;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemClickListener {    private CheckBox all;    private Button sign;    private ListView lv;    private List<Goods> list;    private int num = 0;    private int price = 0;    private MyAdapter myAdapter;    private TextView price1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        all = (CheckBox) findViewById(R.id.all);        lv = (ListView) findViewById(R.id.lv);        price1 = (TextView) findViewById(R.id.price);        getData();        myAdapter = new MyAdapter(this, list);        lv.setAdapter(myAdapter);        all.setOnClickListener(this);        lv.setOnItemClickListener(this);    }    private void getData() {        list = new ArrayList<>();        for (int i = 0; i < 10; i++) {            list.add(new Goods(false, "" + i));        }    }    @Override    public void onClick(View v) {        switch (v.getId()) {            //全选            case R.id.all:                if (all.isChecked()) {                    num = 0;                    price = 0;                    for (int i = 0; i < list.size(); i++) {                        //改变boolean                        list.get(i).setChe(true);                        //如果为选中                        if (list.get(i).isChe()) {                            num++;                            price += Integer.parseInt(list.get(i).getName());                        }                    }                    //刷新                    myAdapter.notifyDataSetChanged();                    //显示                    all.setText("全选");                    price1.setText("一共选了" + num + "件," + "价格是" + price + "元");                } else {                    //全不选                    num = 0;                    price = 0;                    for (int i = 0; i < list.size(); i++) {                        //改值                        list.get(i).setChe(false);                        //刷新                        myAdapter.notifyDataSetChanged();                        //如果为选中                        if (list.get(i).isChe()) {                            num++;                            price += Integer.parseInt(list.get(i).getName());                        }                    }                    all.setText("反选");                    price1.setText("一共选了" + num + "件," + "价格是" + price + "元");                }                break;        }    }    @Override    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {        Toast.makeText(MainActivity.this, "", Toast.LENGTH_LONG).show();        // 取得ViewHolder对象        ViewHolder viewHolder = (ViewHolder) view.getTag();        // 改变CheckBox的状态        viewHolder.checkBox.toggle();        // 将CheckBox的选中状况记录下来        list.get(position).setChe(viewHolder.checkBox.isChecked());        // 调整选定条目        if (viewHolder.checkBox.isChecked() == true) {            num++;            price += Integer.parseInt(list.get(position).getName());            Log.i("", "onItemClick:++++++++++++++ "+"我被执行了");        } else {            num--;            Log.i("", "onItemClick:----------------- "+"我被执行了");            price -= Integer.parseInt(list.get(position).getName());        }        // 用TextView显示        price1.setText("一共选了" + num + "件," + "价格是" + price + "元");    }}
package com.example.myapplication;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.TextView;import java.util.List;/** * Created by Administrator on 2017/7/25. */public class MyAdapter extends BaseAdapter {    private final Context context;    private final List<Goods> goodses;    public MyAdapter(Context context, List<Goods> goodses) {        this.context = context;        this.goodses = goodses;    }    @Override    public int getCount() {        return goodses.size();    }    @Override    public Object getItem(int position) {        return goodses.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        final ViewHolder viewHolder;        if (convertView == null) {            convertView = View.inflate(context, R.layout.che_all, null);            viewHolder = new ViewHolder();            viewHolder.textView = (TextView) convertView.findViewById(R.id.tv);            viewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.che);            convertView.setTag(viewHolder);        } else {            viewHolder = (ViewHolder) convertView.getTag();        }        viewHolder.textView.setText(goodses.get(position).getName());        viewHolder.checkBox.setChecked(goodses.get(position).isChe());        return convertView;    }}