Android 仿京东购物车

因为项目中需要用到购物车,在网上找了很久,一直没有找到一个满意的购物车demo,所以自己花了一天时间,仿写了一个,因为项目中的购物车没有接口,所以购物车的商品信息都是从商品详情哪里得来的,具体步骤如下:

一、获取商品信息添加到sqlite:

这一步我就不详细说了,怎么添加信息到sqlite中,不是很懂的同学可以去我之前写的Android SQLite增删查改哪里查看,有详细代码实现。

点击打开链接

二、购物车页面以及item如下:

listview:



   

        

        

        

    

   

       
       

   

   
   

item




    

        

            
        

        

            
        

        

            

                

                

                    

                    

                    

                    
                
            

            

                

                

                
            
        

    


Android 仿京东购物车_第1张图片 Android 仿京东购物车_第2张图片

三、接下来就是重点了,适配器我是写在Activity下面的,因为在购物车页面我需要操作对应“+”和“-“事件,其中在item中监听事件第一次做的时候不是很懂,仔细研究了挺久的,详细代码如下,不懂的可以提问的呢,哈哈,简单的购物车功能就是这样子了:

public class ShoppingCartActivity extends Activity {

	private TextView back;
	private ListView mListView;
	private TextView delete_table;

	private TextView total_order;
	private TextView update_order;

	SqliteService sqliteService;

	List list;
	private List intenetlistDetials = new ArrayList();

	ShoppingAdapter adapter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		AppManager.getInstance().addActivity(ShoppingCartActivity.this);
		setContentView(R.layout.activity_add_to_shopping_car);

		initView();
		setListener();

	}

	private void initView() {

		back = (TextView) findViewById(R.id.shopping_detail_product_back);
		mListView = (ListView) findViewById(R.id.shopping_order_listview1);

		delete_table = (TextView) findViewById(R.id.shopping_detele_table);

		total_order = (TextView) findViewById(R.id.shopping_order_total);
		update_order = (TextView) findViewById(R.id.update_order);

		sqliteService = new SqliteService(ShoppingCartActivity.this);

		List> mList = new ArrayList>();

		list = new ArrayList();

		OrderDetial orderDetial = null;

		mList = sqliteService.listOederMaps(null);

		if (mList == null) {
			return;
		}

		for (int i = 0; i < mList.size(); i++) {
			Map map = mList.get(i);

			String idString = mList.get(i).get("id").toString();
			String product_id = mList.get(i).get("product_id").toString();
			String product_name = mList.get(i).get("product_name").toString();
			String product_num = mList.get(i).get("product_num").toString();
			String product_integral = mList.get(i).get("product_integral")
					.toString();
			String product_pic = mList.get(i).get("product_pic").toString();

			int id = Integer.parseInt(idString);
			orderDetial = new OrderDetial(id, product_id, product_num,
					product_name, product_integral, product_pic, false);
			list.add(orderDetial);

		}

		LogUtils.e("product_list", list.toString());

		adapter = new ShoppingAdapter(this, list);

		mListView.setAdapter(adapter);

	}

	private void setListener() {

		back.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {

				AppManager.getInstance().finishActivity(
						ShoppingCartActivity.this);

			}
		});

		delete_table.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				sqliteService.deleteOeder(null);			
				
			}
		});

	}

	/**
	 * 适配器是我之前自己封装的
	 * @author zengyi
	 */
	class ShoppingAdapter extends MyAdapter_CommonAdapter {

		TextView product_num1;
		TextView product_num2;

		public ShoppingAdapter(Context context, List datas) {
			super(context, datas);

		}

		@Override
		public View getView(final int position, View convertView,
				ViewGroup parent) {
			ViewHolder holder = ViewHolder.getHolder(mContext, convertView,
					parent,
					com.example.otc.R.layout.item_activity_add_to_shopping_car,
					position);

			final OrderDetial bean = list.get(position);
			((TextView) holder.getView(R.id.shopping_name)).setText(bean
					.getProduct_name());
			((TextView) holder.getView(R.id.shopping_integral)).setText(bean
					.getProduct_integral());

			ImageView mJia = holder.getView(R.id.shopping_order_jia);
			ImageView mJian = holder.getView(R.id.shopping_order_jian);

			product_num1 = ((TextView) holder
					.getView(R.id.order_shopping_num_1));
			product_num2 = ((TextView) holder
					.getView(R.id.order_shopping_num_2));

			product_num2.setText(bean.getProduct_num());
			product_num1.setText(bean.getProduct_num());

			mJia.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View arg0) {
					int p_num = Integer.parseInt(list.get(position)
							.getProduct_num());
					p_num += 1;
					list.get(position).setProduct_num(p_num + "");
					// product_num2.setText(p_num + "");
					adapter.notifyDataSetChanged();
				}
			});
			mJian.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View v) {
					int p_num = Integer.parseInt(list.get(position)
							.getProduct_num());
					if (p_num > 1) {
						p_num--;
						list.get(position).setProduct_num(p_num + "");
						adapter.notifyDataSetChanged();
					} else if (p_num == 1) {
						p_num = 1;
						list.get(position).setProduct_num("1");
						// product_num1.setText(p_num + "");
						adapter.notifyDataSetChanged();
					}

				}
			});

			MyImageLoader.getInstance(mContext).displayImage(
					bean.getProduct_pic(),
					(ImageView) holder.getView(R.id.shopping_images));

			boolean ischeck = list.get(position).isIscheck();

			final CheckBox checkBox = (CheckBox) holder
					.getView(R.id.shopping_checkBox1);

			if (ischeck == false) {// checkbox ischeck
				checkBox.setChecked(false);
			} else {
				checkBox.setChecked(true);
			}
			// check
			checkBox.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View arg0) {
					// TODO Auto-generated method stub
					if (checkBox.isChecked() == true) {
						checkBox.setChecked(true);
						intenetlistDetials.add(bean);
						list.get(position).setIscheck(true);
						
					} else {
						checkBox.setChecked(false);
						intenetlistDetials.remove(bean);
						list.get(position).setIscheck(false);
						
					}
					dogeSum(intenetlistDetials);
					notifyDataSetChanged();
				}

			});

			return holder.getmConvertView();
		}

	}

	/**
	 * 计算总价
	 * @param intenetlistDetials
	 */
	private void dogeSum(List intenetlistDetials) {
		double mdoubTotal = 0;
		if (intenetlistDetials.size()==0) {
			total_order.setText(0+"");
		}
		for (int i = 0; i < intenetlistDetials.size(); i++) {
			int price = Integer.parseInt(intenetlistDetials.get(i)
					.getProduct_num())
					* Integer.parseInt(intenetlistDetials.get(i)
							.getProduct_integral());
			mdoubTotal += price;
			
			total_order.setText(mdoubTotal+"");
		}
		
		
	}
	
}

四、最后运行项目结果如下:

Android 仿京东购物车_第3张图片Android 仿京东购物车_第4张图片


你可能感兴趣的:(Android 仿京东购物车)