Android ListViewDemo
2019独角兽企业重金招聘Python工程师标准>>>
最近在做电商APP,实现购物车功能,按照要求需点击加减改变数量,计算每条数据的小计,及计算全部数据总价。之前都是使用SQLite保存数据,实现起来逻辑处理很麻烦。今天利用下班时间研究了下,写了个Demo实现了想要的功能。下面贴出主要代码,请大家批评指导。
百度网盘分享地址:http://pan.baidu.com/s/1gdw6gz5
MainActivity.java
package com.srain.activity;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;import com.srain.listviewdemo.R;
import com.srain.adapter.ListViewAdapter;public class MainActivity extends Activity {private List<Map<String, Object>> mData;private ListView listview;private ListViewAdapter adapter;private TextView tvAmount;private double amount = 0;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {mData = getData();tvAmount = (TextView) findViewById(R.id.tv_amount);listview = (ListView) findViewById(R.id.listleft);adapter = new ListViewAdapter(this, mLeftListOnItemClick, mData);listview.setAdapter(adapter);listview.setOnItemClickListener(mLeftListOnItemClick);tvAmount.setText("" + amount);TextView tvSub = (TextView) findViewById(R.id.tv_sub);tvSub.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {for (Map<String, Object> map : mData) {Log.e("count", map.get("count").toString());}}});// setlistViewLeft.setChoiceMode(ListView.CHOICE_MODE_SINGLE);// setlistViewLeft.setItemChecked(0, true);// setlistViewLeft.setSelection(0);}private List<Map<String, Object>> getData() {amount = 0;List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Map<String, Object> map = new HashMap<String, Object>();map.put("price", 12);map.put("count", 2);list.add(map);map = new HashMap<String, Object>();map.put("price", 150);map.put("count", 3);list.add(map);map = new HashMap<String, Object>();map.put("price", 120);map.put("count", 8);list.add(map);map = new HashMap<String, Object>();map.put("price", 112);map.put("count", 6);list.add(map);map = new HashMap<String, Object>();map.put("price", 102);map.put("count", 6);list.add(map);// for (Map<String, Object> pram : list) {// int count = Integer.valueOf(pram.get("count").toString());// double price = Double.valueOf(pram.get("price").toString());// double sub = count * price;// amount = amount + sub;// }for (int i = 0; i < list.size(); i++) {Map<String, Object> pram = list.get(i);int count = Integer.valueOf(pram.get("count").toString());double price = Double.valueOf(pram.get("price").toString());double sub = count * price;amount = amount + sub;Log.e("amount", "amount" + amount + "sub" + sub + "i" + i);}return list;}public class MyListener implements View.OnClickListener {private TextView tvcount;private TextView tvsub;private int count;private double price;private int position;public MyListener() {}public MyListener(TextView tvcount, TextView tvsub, int count,double price, int position) {this.tvcount = tvcount;this.tvsub = tvsub;this.count = count;this.price = price;this.position = position;}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.tv_add:count++;double subtotle = price * count;tvcount.setText("" + count);tvsub.setText("" + subtotle);amount += price;tvAmount.setText("" + amount);Map<String, Object> pram = mData.get(position);pram.put("price", price);pram.put("count", count);break;case R.id.tv_del:break;default:break;}}}// OnClickListener bPop = new OnClickListener() {// @Override// public void onClick(View v) {// for(int i=0;i<list.getCount();i++){// if(MyAdapter.isSelected.get(i)){// ViewHolder vHollder = (ViewHolder) list.getChildAt(i).getTag();// Log.i(TAG, "--onClick --"+vHollder.title.getText());// }// }// }// };AdapterView.OnItemClickListener mLeftListOnItemClick = new AdapterView.OnItemClickListener() {public void onItemClick(AdapterView<?> parent, View view, int position,long id) {Map<String, Object> map = mData.get(position);TextView tvadd = (TextView) view.findViewById(R.id.tv_add);TextView tvcount = (TextView) view.findViewById(R.id.tv_count);TextView tvsubtotal = (TextView) view.findViewById(R.id.tv_subtotal);int count = Integer.valueOf(map.get("count").toString());double price = Double.valueOf(map.get("price").toString());double subtotal = Double.valueOf(tvsubtotal.getText().toString());tvadd.setOnClickListener(new MyListener(tvcount, tvsubtotal, count,price, position));Intent intent = new Intent();intent.setClass(MainActivity.this, DetailActivity.class);startActivity(intent);// adapter.setSelectItem(position);// adapter.notifyDataSetInvalidated();// adapter.notifyDataSetChanged();}};}
ListViewAdapter.java
package com.srain.adapter;import java.util.List;
import java.util.Map;import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.TextView;import com.srain.listviewdemo.R;public class ListViewAdapter extends BaseAdapter {private LayoutInflater mInflater;private List<Map<String, Object>> mData;private OnItemClickListener listener;public ListViewAdapter(Context context, OnItemClickListener listener,List<Map<String, Object>> mData) {this.mData = mData;this.mInflater = LayoutInflater.from(context);this.listener = listener;}public int getCount() {return mData.size();}public Object getItem(int arg0) {return mData.get(arg0);}public long getItemId(int arg0) {return arg0;}public View getView(int position, View convertView, ViewGroup parent) {Map<String, Object> map = mData.get(position);ViewHolder holder = null;if (convertView == null) {holder = new ViewHolder();convertView = mInflater.inflate(R.layout.leftview, null);holder.tvadd = (TextView) convertView.findViewById(R.id.tv_add);holder.tvdel = (TextView) convertView.findViewById(R.id.tv_del);holder.tvConut = (TextView) convertView.findViewById(R.id.tv_count);holder.tvSubtotal = (TextView) convertView.findViewById(R.id.tv_subtotal);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}int count = Integer.valueOf(map.get("count").toString());double price = Double.valueOf(map.get("price").toString());holder.tvConut.setText(count + "");holder.tvSubtotal.setText(price * count + "");if (position == selectItem) {convertView.setBackgroundColor(Color.RED);} else {convertView.setBackgroundColor(Color.TRANSPARENT);}return convertView;}public void setSelectItem(int selectItem) {this.selectItem = selectItem;}private int selectItem = 0;public final class ViewHolder {public TextView tvadd;public TextView tvdel;public TextView tvConut;public TextView tvSubtotal;}
}
转载于:https://my.oschina.net/u/2320057/blog/392437
Android ListViewDemo相关推荐
- Android开源项目分类汇总-转载
太长了,还是转载吧... 今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源项目分类汇总,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有 ...
- Android开源项目分类汇总[转]
Android开源项目分类汇总 如果你也对开源实现库的实现原理感兴趣,欢迎 Star 和 Fork Android优秀开源项目实现原理解析 欢迎加入 QQ 交流群:383537512(入群理由需要填写 ...
- android 开源收藏
第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...
- android一些可用实例2014收藏
目前包括: Android开源项目第一篇--个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pr ...
- 2016年GitHub上史上最全的Android开源项目分类汇总
以下内容为转载 版主原网址 http://itindex.net/detail/51896-github-android-开源 GitHub上史上最全的Android开源项目分类汇总 今天在看博客的时 ...
- Android常用开源项目
Android开源项目第一篇--个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Progre ...
- Android 开源项目分类汇总 APP功能汇总
Android 开源项目第一篇--个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Progr ...
- Android UI + Function
第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...
- Android UI个性style
Android开源项目第一篇--个性化控件(View) ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar ...
最新文章
- 盘点2018十大科技丑闻,IT相关两项
- python学好了能干什么-Python语言能做什么,学好能干什么
- 实际开发什么场景用到线程池_线程池的具体业务场景分析
- IBM服务器显示系统恢复,苏州数据恢复_IBM X3850服务器数据恢复中处理SAS硬盘故障的恢复案例...
- matlab将满足某一条件的矩阵元素置零
- android4.0.3 修改启动动画和开机声音
- 辗转相除求最大公约数最小公倍数 扩展欧几里得算法
- 人才盘点最佳实践:45页人才盘点的流程与方法,管理梯队模型
- 如果地球突然停止转动,那么接下来会发生什么?
- 用SQL Server 2017图形数据库替换数据仓库中的桥表
- 谷雨钜献 | 用深度学习理解遥感图像,识别效率提升90倍,PaddlePaddle中科院遥感地球所...
- C语言中malloc,calloc,realloc,free的语法与作用
- 灰狼/狼群算法优化支持向量机SVM分类预测matlab代码,支持多分类。 Excel数据格式 ,直接运行 。
- java web课程设计目的_javaweb课程设计
- 大数据主要应用于哪些行业,应用价值是什么?
- 木门工厂木门、门套、套线公式和算法
- Linux之core dumped出错原因及位置分析
- Linux vi vim 宏 批量操作 重复操作 宏录制
- 美国H1B基本情况及相关数据
- linux安装maven并配置环境变量
热门文章
- JavaScript 入门基础 (八)
- WSS页面定制系列(2)---定制单个列表的表单页面
- c语言随机三位数,【分享代码】弥补c语言随机数不足
- WindowsPE 第七章 资源表
- POJ1149 PIGS(最大流)
- hdu1043 经典的八数码问题 逆向bfs打表 + 逆序数
- 【Flutter】Image 组件 ( 内存加载 Placeholder | transparent_image 透明图像插件 )
- 【Android 电量优化】电量优化 ( 充电状态获取 | 主动获取充电状态 | 广播接受者监听充电状态 | 被动获取充电状态 | 注册空广播接受者获取历史广播 )
- spotlight监控linux性能
- 子串在主机中出现的位置indexOf()--简单