购物车必备全选反选
来源:互联网 发布:胖熊数据库的微博 微博 编辑:程序博客网 时间: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; }}
阅读全文
0 0
- 购物车必备全选反选
- 购物车全选反选
- 全选与反选_购物车
- 购物车的全选和反选
- 购物车全选,反选,结算
- 购物车,全选,反选,删除,添加
- angularjs购物车全选反选
- 购物车全选+单选+反选简单逻辑实现
- 类购物车的全选反选效果
- 关于购物车全选反选结算问题
- RecyclerView实现购物车的全选、反选功能
- 简单购物车Demo_全选+反选+商品计价
- Android Studio 购物车,二级目录,全选反选,计数
- Andriodjie——简单的购物车全选反选
- android studio二级购物车的反选全选
- 二级列表购物车的全选反选
- 购物车=加减+计算+总和+全选+反选+删除
- Android 实现RecyclerView嵌套RecyclerView 实现购物车的全选 反选 单选 商家全选
- NYOJ 135 取石子(二)(巴什博奕+尼姆博弈)
- 罗马字符与整数互转
- 如何获取富文本框中的内容
- ibatis&mybatis组装动态查询&排序
- 判断浏览器内核
- 购物车必备全选反选
- NAPT和NAT的工作原理及其区别
- Bootscrap 箭头按钮
- android,安卓,toolbar,menu显示位置
- AES加密和解密(使用openssl编程)
- Mac Xampp 安装redis 及 安装php-redis扩展
- 往数组Array中添加元素
- Android-五子连珠(四)-MainActivity的Java代码
- Effective C++之Item 20: 用 pass-by-reference-to-const(传引用给 const)取代 pass-by-value(传值)