全选、反选、取消

来源:互联网 发布:淘宝网冬天皮鞋男士 编辑:程序博客网 时间:2024/05/29 08:45
package com.example.checkbox;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import com.example.checkbox.Goodbean.Data;import com.example.checkbox.MainActivity.MyName.ViewHolder;import com.google.gson.Gson;import com.lidroid.xutils.HttpUtils;import com.lidroid.xutils.exception.HttpException;import com.lidroid.xutils.http.ResponseInfo;import com.lidroid.xutils.http.callback.RequestCallBack;import com.lidroid.xutils.http.client.HttpRequest;import com.nostra13.universalimageloader.core.ImageLoader;public class MainActivity extends Activity implements OnClickListener {private ViewHolder holder = null;private ArrayList<Data> datas = new ArrayList<Goodbean.Data>();private ListView lv;private MyName adapter;private TextView tv_all;// 全选private TextView tv_dese;// 反选private TextView tv_cancel;// 取消选择private double checkNum; // 记录选中的条目数量private TextView tv_show;// 用于显示选中的条目数量private String url = "http://m.yunifang.com/yunifang/mobile/goods/getall?random=87749&encode=ac6bd45b8f50b626a6843b294af8fed5";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findView();httpjson();}private void httpjson() {HttpUtils http = new HttpUtils();http.send(HttpRequest.HttpMethod.GET, url,new RequestCallBack<String>() {@Overridepublic void onSuccess(ResponseInfo<String> responseInfo) {String jsonto = responseInfo.result;System.out.println(jsonto);Gson gson = new Gson();Goodbean good = gson.fromJson(jsonto, Goodbean.class);datas = good.data;adapter = new MyName(MainActivity.this, datas);lv.setAdapter(adapter);}@Overridepublic void onFailure(HttpException e, String s) {}});}private void findView() {tv_show = (TextView) findViewById(R.id.tv_show);lv = (ListView) findViewById(R.id.lv);tv_all = (TextView) findViewById(R.id.tv_selectall);tv_dese = (TextView) findViewById(R.id.tv_deselectall);tv_cancel = (TextView) findViewById(R.id.tv_cancelselectall);tv_all.setOnClickListener(this);tv_dese.setOnClickListener(this);tv_cancel.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.tv_selectall:// 全选for (int i = 0; i < adapter.getSelect().size(); i++) {checkNum = checkNum + datas.get(i).shop_price;DecimalFormat df = new DecimalFormat("###.00");tv_show.setText("¥" + df.format(checkNum));adapter.getSelect().set(i, true);}adapter.notifyDataSetChanged();break;case R.id.tv_deselectall:// 反选if (!adapter.getSelect().contains(true)) {Toast.makeText(MainActivity.this, "请选择0", 0).show();}else {for (int i = 0; i < adapter.getSelect().size(); i++) {if (adapter.getSelect().get(i)) {adapter.getSelect().set(i, false);}else {adapter.getSelect().set(i, true);}}if (adapter.getSelect().contains(true)) {holder.check_box.setChecked(false);}}adapter.notifyDataSetChanged();break;case R.id.tv_cancelselectall:// 取消选中for (int i = 0; i < datas.size(); i++) {if (adapter.getSelect().get(i)) {adapter.getSelect().set(i, false);checkNum = checkNum -datas.get(i).shop_price;DecimalFormat df = new DecimalFormat("###.00");tv_show.setText("¥" + df.format(checkNum));}}adapter.notifyDataSetChanged();break;default:break;}}public class MyName extends BaseAdapter {public LinkedList<Boolean> linkedList = new LinkedList<Boolean>();private Context context;private ArrayList<Data> datas = new ArrayList<Goodbean.Data>();public MyName(Context context, ArrayList<Data> datas) {super();this.context = context;this.datas = datas;// 初始化for (int i = 0; i < datas.size(); i++) {getSelect().add(false);}}/** * 初始化数据 */private List<Boolean> getSelect() {return linkedList;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn datas.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn datas.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {if (convertView == null) {// 获得ViewHolder对象holder = new ViewHolder();// 导入布局并赋值给convertviewconvertView = View.inflate(context, R.layout.itemcheckbx_name,null);holder.tv_name = (TextView) convertView.findViewById(R.id.name);holder.price = (TextView) convertView.findViewById(R.id.price);holder.image = (ImageView) convertView.findViewById(R.id.image);holder.check_box = (CheckBox) convertView.findViewById(R.id.cbCheckBox);// 为view设置标签convertView.setTag(holder);} else {// 取出holderholder = (ViewHolder) convertView.getTag();}// 设置list中TextView的显示holder.tv_name.setText(datas.get(position).efficacy);holder.price.setText("价格:"+datas.get(position).shop_price);ImageLoader.getInstance().displayImage(datas.get(position).goods_img, holder.image);// 根据isSelected来设置checkbox的选中状况// 实现了设置CheckBox的选中状况holder.check_box.setChecked(linkedList.get(position));holder.check_box.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {if (holder.check_box.isChecked() == true) {checkNum = checkNum + datas.get(position).shop_price;DecimalFormat df = new DecimalFormat("###.00");tv_show.setText("¥" + df.format(checkNum));} else if (holder.check_box.isChecked() == false) {checkNum = checkNum - datas.get(position).shop_price;DecimalFormat df = new DecimalFormat("###.00");tv_show.setText("¥" + df.format(checkNum));}linkedList.set(position, !linkedList.get(position));if (linkedList.contains(false)) {holder.check_box.setChecked(true);} else {holder.check_box.setChecked(false);}notifyDataSetChanged();}});return convertView;}public class ViewHolder {public TextView price;public TextView tv_name;public CheckBox check_box;public ImageView image;}}}

0 0