首先我们先来看下布局
<?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; } }