话不多说,先上效果图。带选择框和全选按钮的列表,因一些特殊要求还加上些计算功能,这并不是难就是稍微繁琐了些,如 “统计订单功能”

不要说,就是干,那就直接上代码


  • 1,主页面的布局文件activity_test7.xml
<?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"android:background="@color/colorWhite"android:orientation="vertical"><ListView
        android:id="@+id/lv_list"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:scrollbars="none"android:dividerHeight="0.1dp"android:clickable="true" /><LinearLayout android:id="@+id/ll_bottom"android:layout_width="match_parent"android:layout_height="50dp"android:gravity="center_vertical"android:layout_alignParentBottom="true"android:orientation="horizontal"><ImageView
            android:id="@+id/iv_select"android:layout_width="23dp"android:layout_height="23dp"android:layout_marginLeft="15dp"android:layout_marginRight="10dp"android:src="@mipmap/gc2_04" /><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="全选"android:layout_marginRight="10dp"android:textColor="#7d7d80"android:textSize="14sp" /><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="总金额:"android:textColor="#000000"android:textSize="14sp" /><TextView
            android:id="@+id/tv_allMoney"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="¥ 0.00"android:textColor="#ff0000"android:textSize="14sp" /><TextView
            android:id="@+id/tv_apply"android:layout_width="110dp"android:layout_height="match_parent"android:text="提 交"android:textColor="@color/colorWhite"android:gravity="center"android:background="#ff0000"android:textSize="17sp" /></LinearLayout>
</LinearLayout>
  • 2,接下来到Activity代码,基本上都有注释的不多说了
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;import com.example.administrator.pagertest.adapter.InvoiceApplyAdapter;
import com.example.administrator.pagertest.model.InvoiceApplyBean;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;public class TestCheckActivity extends Activity implements AdapterView.OnItemClickListener,View.OnClickListener {//自己搞来些假数据private String resultJosn = "[\n" +"      {\n" +"        \"id\": \"1\",\n" +"        \"name\": \"购买门票\",\n" +"        \"money\": \"124.00\",\n" +"        \"ordernum\": \"1526979933006\",\n" +"        \"time\": \"2018年6月01日\"\n" +"      },\n" +"      {\n" +"        \"id\": \"2\",\n" +"        \"name\": \"购买食物\",\n" +"        \"money\": \"102.00\",\n" +"        \"ordernum\": \"1526979435086\",\n" +"        \"time\": \"2018年6月01日\"\n" +"      },\n" +"      {\n" +"        \"id\": \"3\",\n" +"        \"name\": \"购买特产\",\n" +"        \"money\": \"1100.00\",\n" +"        \"ordernum\": \"1526979935036\",\n" +"        \"time\": \"2018年6月01日\"\n" +"      }\n" +"]";private List<InvoiceApplyBean> mListData = new ArrayList<>();//数据源private List<InvoiceApplyBean> mList;private LinearLayout ll_bottom;private ImageView iv_select;private TextView tv_allMoney;private TextView tv_apply;private ListView lv_ListView;private InvoiceApplyAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_test7);initView();}//初始化控件private void initView() {ll_bottom = (LinearLayout)findViewById(R.id.ll_bottom);iv_select = (ImageView)findViewById(R.id.iv_select);tv_allMoney = (TextView)findViewById(R.id.tv_allMoney);tv_apply = (TextView)findViewById(R.id.tv_apply);lv_ListView = (ListView)findViewById(R.id.lv_list);adapter = new InvoiceApplyAdapter(this, mListData);lv_ListView.setAdapter(adapter);lv_ListView.setOnItemClickListener(this);ll_bottom.setOnClickListener(this);tv_apply.setOnClickListener(this);initDate();}//解析数据private void initDate() {Gson gson = new Gson();//用Gson解析数据mList = gson.fromJson(resultJosn, new TypeToken<List<InvoiceApplyBean>>() {}.getType());mListData.addAll(mList);adapter.notifyDataSetChanged();}private boolean isAllCheck = false;//一个判断是否全选的标记//用BigDecimal这个类想大家都才到原因了,防止计算过程中出现精度亏损private BigDecimal bignum1 = new BigDecimal("0.00");//总金额的默认值,注意尽量传入字符串类型,而非数值型private BigDecimal bignum2;@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {if (position >= 0 && position <= mListData.size()){if (mListData.get(position).getFlag()==0){//如果点击项是 选中状态,将变成 不选中状态,金额相加mListData.get(position).setFlag(1);bignum2 = new BigDecimal(mListData.get(position).getMoney());bignum1 = bignum1.add(bignum2);//金额相加}else if (mListData.get(position).getFlag()==1){//如果点击项是 不选中状态,将变成 选中状态,金额相减mListData.get(position).setFlag(0);bignum2 = new BigDecimal(mListData.get(position).getMoney());bignum1 = bignum1.subtract(bignum2);//金额相减}tv_allMoney.setText("¥ "+bignum1);//设置显示价格//遍历处理全选按钮。这样写功能上是可以实现的,但效率不是很好for (int i=0; i < mListData.size(); i++){if (mListData.get(i).getFlag()==1){isAllCheck = true;iv_select.setImageResource(R.mipmap.check2_15);}if (mListData.get(i).getFlag()==0){//遍历所有数据,如果有一个未选上,全选按钮都是默认没选上状态isAllCheck = false;iv_select.setImageResource(R.mipmap.gc2_04);break;//这句break代码很关键}}adapter.notifyDataSetChanged();}}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.ll_bottom://全选按钮bignum1 = new BigDecimal("0.00");if (!isAllCheck) {//全选isAllCheck = true;iv_select.setImageResource(R.mipmap.check2_15);for (int i = 0; i < mListData.size(); i++) {mListData.get(i).setFlag(1);bignum2 = new BigDecimal(mListData.get(i).getMoney());bignum1 = bignum1.add(bignum2);}tv_allMoney.setText("¥ " + bignum1);adapter.notifyDataSetChanged();} else {//全不选isAllCheck = false;iv_select.setImageResource(R.mipmap.gc2_04);for (int i = 0; i < mListData.size(); i++) {mListData.get(i).setFlag(0);bignum2 = new BigDecimal(mListData.get(i).getMoney());bignum1 = bignum1.subtract(bignum2);}//防止金额少于0if (bignum1.doubleValue() >= 0) {tv_allMoney.setText("¥ " + bignum1);} else {bignum1 = new BigDecimal("0.00");tv_allMoney.setText("¥ " + bignum1);}adapter.notifyDataSetChanged();}break;case R.id.tv_apply://提交Toast.makeText(getApplicationContext(),""+bignum1,Toast.LENGTH_SHORT).show();break;}}
}
  • 3,里面用到的Javabean类, InvoiceApplyBean.java
public class InvoiceApplyBean {private String id;private String name;private String money;private String ordernum;private String time;private int flag = 0;public int getFlag() {return flag;}public void setFlag(int flag) {this.flag = flag;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getMoney() {return money;}public void setMoney(String money) {this.money = money;}public String getOrdernum() {return ordernum;}public void setOrdernum(String ordernum) {this.ordernum = ordernum;}public String getTime() {return time;}public void setTime(String time) {this.time = time;}
}
  • 4,适配器InvoiceApplyAdapter.java
public class InvoiceApplyAdapter extends BaseAdapter {private Context mContext;private LayoutInflater lInflater;private List<InvoiceApplyBean> list = new ArrayList<>();public InvoiceApplyAdapter(Context mContext, List<InvoiceApplyBean> list) {this.mContext = mContext;this.list = list;if (mContext != null) {lInflater = LayoutInflater.from(mContext);}}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int i) {return list.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {ViewHolder holder;if (view == null) {holder = new ViewHolder();view = lInflater.inflate(R.layout.invoice_apply_item, null);holder.iv_select = (ImageView) view.findViewById(R.id.iv_select);holder.tv_title = (TextView) view.findViewById(R.id.tv_title);holder.tv_money = (TextView) view.findViewById(R.id.tv_money);holder.tv_number = (TextView) view.findViewById(R.id.tv_number);view.setTag(holder);} else {holder = (ViewHolder) view.getTag();}final InvoiceApplyBean bean = list.get(i);holder.tv_title.setText(bean.getName());holder.tv_money.setText("订单金额:"+bean.getMoney()+"元  |  订单时间:"+bean.getTime());holder.tv_number.setText("订单号:"+bean.getOrdernum());if (bean.getFlag() == 0){holder.iv_select.setImageResource(R.mipmap.gc2_04);}else if (bean.getFlag() == 1){holder.iv_select.setImageResource(R.mipmap.check2_15);}return view;}static class ViewHolder {private ImageView iv_select;public TextView tv_title, tv_money, tv_number;}
}
  • 5,子项的布局文件 invoice_apply_item.xml
<?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="wrap_content"android:gravity="center_vertical"android:orientation="horizontal"android:paddingTop="15dp"android:paddingBottom="15dp"android:paddingLeft="10dp"android:paddingRight="10dp"><ImageView
        android:id="@+id/iv_select"android:layout_width="23dp"android:layout_height="23dp"android:layout_marginRight="10dp"android:src="@mipmap/gc2_04" /><LinearLayout
        android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextView
            android:id="@+id/tv_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:text=""android:textColor="#000000"android:textSize="15sp" /><TextView
            android:id="@+id/tv_money"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="8dp"android:layout_marginTop="8dp"android:text=""android:textColor="#000000"android:textSize="12sp" /><TextView
            android:id="@+id/tv_number"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:textColor="#7d7d80"android:textSize="12sp" /></LinearLayout>
</LinearLayout>
  • 6,在gradle中添加 Gson 依赖
compile 'com.google.code.gson:gson:2.7'
compile 'com.google.code.gson:gson-parent:2.7'
  • 7,各位老铁们,到这里就是全部代码了,最主要就是每次操作就遍历数据,做相应的改变即可。用到的gc2_04 、 check2_15着两个小图标就不传,这次的源码也不传了

统计订单:复选+全选+计算 的列表相关推荐

  1. vue 带全选和多选的表格怎么写_vue实现下拉列表多选全选以及模糊查询的vue组件...

    vue实现下拉列表多选全选以及模糊查询的vue组件 发布时间:2018-09-12 17:41, 浏览次数:3776 , 标签: vue <>前端,有时有这样的需求,需要一个下拉列表,还要 ...

  2. VUE:checkbox 单选框(单选、多选)、一选全选 / 全选一选、表格单选列实现

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 效果:如红框中部分. 一选全选:表头上的单选框选中则下面每行都选中. 全选一选:表中数据每行都 ...

  3. JQuery全选反选 随其他checkbox自动勾选全选反选

    工作中的代码片段 写出来留作以后对比参考 网上没找到自己想要的全选反选代码 干脆自己写了个比较臃肿的 相信还有更加简单的方法 jquery代码 ============================ ...

  4. 计算机快捷键全选,全选快捷键,详细教您电脑全选快捷键是什么

    在使用电脑的时候经常会遇到要全选的情况,使用鼠标右键进行全选在频繁使用全选的情况下会影响到编辑的速度,那么全选的快捷键是什么呢?没有使用过的用户就不知道了,下面,小编就来跟大家讲讲电脑全选快捷键. 经 ...

  5. el-select多选全选

    <template><div><el-select @change="handleSelect($event)" v-model="sele ...

  6. vue 实现el-select组件 配合 el-tabs 完成动态tabs然后有勾选 全选,还有模拟提交,回显数据

    cv即可使用 <!DOCTYPE html> <!DOCTYPE html> <html lang="en"><head><m ...

  7. MySQL中用户订单复购率的计算

    1.项目需求(计算复购率) 订单表中有用户ID.订单金额.每笔订单的下单时间等信息,需要统计每个月在接下来几个月用户复购情况 // 创建数据表 create table orders( order_i ...

  8. Vue-----table 控件自动勾选全选框2 与tab控件组合使用

    页面区别: 代码: // 标签页的切换 tabClick(tab, event) {//获取tabs页的索引this.tabIndex=tab.indexthis.getEffectByProject ...

  9. vue实现div多选全选功能_怎样为你的 Vue.js 单页应用提速

    每日前端夜话第323篇 翻译:疯狂的技术宅 作者:Matthias Sommer 来源:dzone 正文共:1956 字 预计阅读时间:10 分钟 我有一个项目用了 Vue.js 来构建单页应用程序. ...

最新文章

  1. Struts2工作原理详解
  2. mysql通配符_mysql通配符进行模糊查询
  3. oracle12c之 控制pdb中sga 与 pga 内存使用
  4. 【Elasticsearch】如何在生产中执行Elasticsearch的零停机升级
  5. Python 基础—— collections 模块
  6. c++怎么输入带有空格的字符串_字符串,啥东东?
  7. 使用Crash工具查看一个TCP listen sock内存布局实例
  8. 全面解读新中产:有房有车有贷、半数决策看老婆
  9. 单片机的c语言程序设计显示12,12手把手教你学单片机的C语言程序设计中断服务函数.pdf...
  10. vue 导出excel文件
  11. #MAXScript学习# 1批量导出fbx
  12. 微信公众号迁移公证书需要哪些材料?账号迁移流程来了
  13. 状态码如何返回Http/1.1 200 OK
  14. ACM模版-f_zyj v 2.0——更新通知
  15. 全面升级,你能想象的都在这————京东API接口
  16. 小米机顶盒显示网络无法连接服务器,小米盒子无线网络连接不上怎么回事 - 卡饭网...
  17. vue 项目总结一组件开发的配置和例子
  18. 小米air2se耳机只有一边有声音怎么办_盘点2020半入耳蓝牙耳机排名
  19. RDD.repartition
  20. win10 状态栏图标变成白色方块

热门文章

  1. 重装系统计算机名称回对ug,电脑重装系统后UG软件没有卸载的情况下重新启动UG软件的方法...
  2. html跨年表白代码
  3. 消息中间件在分布式系统中的作用及介绍
  4. android适配工具,Android自动适配工具
  5. iPhone 15 Pro有望实现屏下面容识别 三星已在研发相关技术
  6. 国家市场监管总局:互联网广告不得等倒计时结束才能关闭
  7. 因2800万美元太贵 演员汤姆·汉克斯拒绝贝佐斯上太空邀请
  8. 百度Apollo自动驾驶车辆将在苏州太湖面向民众开放
  9. iPhone 13 Pro手机壳曝光 网友:更丑了
  10. 华为HarmonyOS 2.0 手机开发者Beta版发布