wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改。本文分享其中实现带图片和checkbox的listview,供技术员参考学习。

import com.inuoer.util.AsyncImageLoader.ImageCallback;
import com.inuoer.wemall.R;

public class MainAdapter extends BaseAdapter {

	private LayoutInflater mInflater;// 得到一个LayoutInfalter对象用来导入布局
	private ArrayList<Map<String, Object>> getDate;
	private Context mContext;

	public MainAdapter(Context context , ArrayList<Map<String, Object>> getDate) {
		this.mContext = context;
		this.mInflater = LayoutInflater.from(context);
		this.getDate = getDate;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return getDate.size();// 返回数组的长度
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return getDate.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@SuppressLint("NewApi")
	@Override
	public View getView(final int position, View convertView,
			ViewGroup parent) {
		// TODO Auto-generated method stub
		final ViewHolder holder;
		if (convertView == null) {
			holder = new ViewHolder();
			convertView = mInflater.inflate(R.layout.itemlist_shop, null);
			holder.image = (ImageView) convertView
					.findViewById(R.id.itemlist_image);
			holder.name = (TextView) convertView
					.findViewById(R.id.itemlist_shopname);
			holder.price = (TextView) convertView
					.findViewById(R.id.waimai_shopmenu_adapter_item_price);
			holder.plusButton = (ImageButton) convertView
					.findViewById(R.id.plus_btn);
			holder.minusButton = (ImageButton) convertView
					.findViewById(R.id.minus_btn);
			holder.numTextView = (TextView) convertView
					.findViewById(R.id.count);
			convertView.setTag(holder);// 绑定ViewHolder对象
		} else {
			holder = (ViewHolder) convertView.getTag();// 取出ViewHolder对象
		}

		convertView.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				final LinearLayout layout = (LinearLayout) mInflater.inflate(R.layout.dialog_detail, null);
				final Dialog dialog = new Dialog(mContext);
				dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
				dialog.setContentView(layout);
				dialog.show();

				final ImageView imageView = (ImageView) layout.findViewById(R.id.dialog_detail_big_image);
				new AsyncImageLoader(mContext).downloadImage(getDate.get(position).get("image").toString(),true,
						new ImageCallback() {
							@Override
							public void onImageLoaded(Bitmap bitmap, String imageUrl) {
								// TODO Auto-generated method stub
								imageView.setImageBitmap(bitmap);
							}
						});

				TextView textViewPrice = (TextView)layout.findViewById(R.id.dialog_detail_single_price);
				textViewPrice.setText(holder.price.getText().toString());

				TextView textViewNum = (TextView) layout.findViewById(R.id.count);
				textViewNum.setText(holder.numTextView.getText().toString());

				layout.findViewById(R.id.dialog_detail_close).setOnClickListener(new OnClickListener() {
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						dialog.dismiss();
					}
				});
				layout.findViewById(R.id.dialog_detail_addcart).setOnClickListener(new OnClickListener() {
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						dialog.dismiss();
					}
				});
				final TextView textViewin = (TextView) layout.findViewById(R.id.count);
				layout.findViewById(R.id.plus_btn).setOnClickListener(new OnClickListener() {
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						holder.plusButton.callOnClick();
						textViewin.setText(holder.numTextView.getText().toString());
					}
				});
				layout.findViewById(R.id.minus_btn).setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						holder.minusButton.callOnClick();
						textViewin.setText(holder.numTextView.getText().toString());
					}
				});

			}
		});

//		String imgUrl = getDate.get(position).get("image").toString();
//        AsyncImageLoader loader = new AsyncImageLoader(mContext);
//        //将图片缓存至外部文件中
//        loader.setCache2File(true);	//false
//        //设置外部缓存文件夹
//        loader.setCachedDir(mContext.getCacheDir().getAbsolutePath());

        //下载图片,第二个参数是否缓存至内存中
//        loader.downloadImage(imgUrl, false, new AsyncImageLoader.ImageCallback() {
//			@Override
//			public void onImageLoaded(Bitmap bitmap, String imageUrl) {
//				if(bitmap != null){
//					holder.image.setImageBitmap(bitmap);
//				}else{
//					//下载失败,设置默认图片
//					holder.image.setImageResource(R.drawable.about_logo);
//				}
//			}
//		});
		new AsyncImageLoader(mContext).downloadImage(getDate.get(position).get("image").toString(),true,
				new ImageCallback() {
					@Override
					public void onImageLoaded(Bitmap bitmap, String imageUrl) {
						// TODO Auto-generated method stub
						holder.image.setImageBitmap(bitmap);
					}
				});

		holder.name.setText(getDate.get(position).get("name")
				.toString());
		holder.price.setText(getDate.get(position).get("price")
				.toString());
		holder.numTextView.setText(String.valueOf(CartData.findCart(position)));
		holder.plusButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				int num = Integer.parseInt(holder.numTextView.getText()
						.toString()) + 1;
				holder.numTextView.setText(String.valueOf(num));

				CartData.editCart(getDate.get(position).get("id").toString(),
						getDate.get(position).get("name").toString(),
						getDate.get(position).get("price").toString(),
						String.valueOf(num),
						getDate.get(position).get("image").toString());

			}
		});
		holder.minusButton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				int num = Integer.parseInt(holder.numTextView.getText()
						.toString()) - 1;
				if (num >= 0) {
					holder.numTextView.setText(String.valueOf(num));
					if (num == 0) {
						CartData.removeCart(getDate.get(position)
								.get("id").toString());
					} else {
						CartData.editCart(getDate.get(position).get("id").toString(),
								getDate.get(position).get("name").toString(),
								getDate.get(position).get("price").toString(),
								String.valueOf(num),
								getDate.get(position).get("image").toString());
					}

				}
			}
		});

		return convertView;
	}

}

  

原文详情地址:http://git.oschina.net/einsqing/wemall-mobile

wemall-mobile商城详情地址:http://www.koahub.com/home/product/56

wemall官网地址:http://www.wemallshop.com

WeMall - 开源微商城 微信商城 商城源码 分销商城 b2b2c商城系统

wemall app商城源码中实现带图片和checkbox的listview的更多相关文章

  1. wemall app商城源码中android按钮的三种响应事件

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码中android按 ...

  2. wemall app商城源码中基于JAVA的Android异步加载图片管理器代码

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

  3. wemall app商城源码中基于JAVA的绑定和处理fragments和viewpager之间的逻辑关系代码

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

  4. wemall app商城源码中基于PHP的ThinkPHP惯例配置文件代码

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

  5. wemall app商城源码中基于JAVA通过Http请求获取json字符串的代码

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.分享其中关于通过Http请求获取json字符串的代码供 ...

  6. wemall app商城源码中ScrollView中嵌套ListView主要代码

    很多时间我们在scorllview中嵌入listview的时候,都只能看到listview显示一行数据,而我们的要求是显示多行,即我们数据的行数, 当ListView的高度设定一定的值时,ListVi ...

  7. wemall app商城源码中基于PHP的通用的树型类代码

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

  8. wemall app商城源码Android之支付宝通知处理类

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之处 ...

  9. wemall app商城源码Android之支付宝接口公用函数

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之  ...

随机推荐

  1. CSS 简介、语法、派生选择器、id 选择器、类选择器、属性选择器

    CSS 概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现 ...

  2. Blend4 的安装和配置

    Microsoft Expression Blend作为一款功能齐全的专业设计工具,可用来针对基于 Microsoft Windows 和基于 Microsoft Silverlight 1.0 的应 ...

  3. Java泛型类型擦除导致的类型转换问题

    初步结论:泛型类型转换不靠谱: 源码: package com.srie.testjava; public class TestClassDefine4<T> { public stati ...

  4. IOS解析XML

    XML也许是我们储存数据和通讯数据中最常见的一种简易方式,当我们来到XML的海洋时,我们会发现当我们用iPhone程序解析XML时,我们是有如此多的选项,让人眼花缭乱.iOS SDK本身就带有两种不同 ...

  5. Hadoop权威指南:通过FileSystem API读取数据

    Hadoop权威指南:通过FileSystem API读取数据 [TOC] 在Hadoop中,FileSystem是一个通用的文件系统API 获取FileSystem实例的几个静态方法 public ...

  6. Disruptor深入解读

    将系统性能优化到极致,永远是程序爱好者所努力的一个方向.在java并发领域,也有很多的实践与创新,小到乐观锁.CAS,大到netty线程模型.纤程Quasar.kilim等.Disruptor是一个轻 ...

  7. 下一个项目为什么要用 SLF4J

    阿里巴巴 Java 开发手册 前几天阿里巴巴在云栖社区首次公开阿里官方Java代码规范标准,就是一个PDF手册,有命名规范,让你知道自己原来取的每一个类名.变量名都是烂名字,真替你家未来孩子担心:有集 ...

  8. 三层——vb.net版

    经过不懈的努力,我的vb.net 版的三层登陆终于实现了.下面将我的成果向大家展示一下. 原则          vb.net的三层登陆跟C#的三层登陆的思想是一样的都是将系统分层--U层只负责与用户 ...

  9. IIS配置步骤,绝对有用,百度上的不全面,是百度的补充

    百度教程:http://www.jb51.net/article/29787.htm 参照百度教程,但是配置不成功,关键的地方来了!! 下面的也要配置设置 1. 2. 3.C:\Windows\Sys ...

  10. block之---应用场景:做参数和返回值

    1.做参数 什么时候使用Block充当参数? 封装一个功能,这个功能做什么事情由外界决定,但是什么时候调用由内部决定,这时候就需要把Block充当参数去使用. 模拟需求: 封装一个计算器,怎么计算由外 ...