android ListView的item中Button(购物数量加减器)

1.临时保存每个item中的显示数量控件的text:

    HashMap<Integer,Interger> map = new HashMap<Integer,Integer>();

    使用map来保存每条item显示的数量值。EditText在BaseAdapter中的getView()

    方法中去显示对应position的map中的值,如下:

     editText.setText(map.get(position));

2. "-"和"+"添加点击监听去操作map数据。使用接口回调的方法,然后再adapter.notifyDataSetChanged()

    ---> 调用baseadapter中的getView()方法。

 

代码如下:

BaseAdapter

 

@Override
	public View getView(final int position, View convertView, ViewGroup parent) {
		if (convertView == null) {
			convertView = inflater.inflate(R.layout.item_food, null);
			holder = new ViewHolder();
			holder.img = (ImageView) convertView
					.findViewById(R.id.product_list_item_img);
			holder.name = (TextView) convertView
					.findViewById(R.id.product_list_item_name);
			holder.price = (TextView) convertView
					.findViewById(R.id.product_list_item_price);
			holder.description_long = (TextView) convertView
					.findViewById(R.id.product_list_item_product_long);
			holder.layout_foodCountSelect = (LinearLayout) convertView
					.findViewById(R.id.layout_food_count_select);
			holder.btn_food_delete = (Button) convertView
					.findViewById(R.id.btn_food_delete);
			holder.btn_food_count = (Button) convertView
					.findViewById(R.id.btn_food_count);
			holder.btn_food_add = (Button) convertView
					.findViewById(R.id.btn_food_add);
			convertView.setTag(holder);
		} else {
			holder = (ViewHolder) convertView.getTag();
		}

		Product product = datalist.get(position);
		if (product != null) {
			if (!TextUtils.isEmpty(product.getName())) {
				holder.name.setText(product.getName());
			}

			holder.price.setText("¥" + product.getPrice());
			if (!TextUtils.isEmpty(product.getDescription())) {
				holder.description_long
						.setText("介绍" + product.getDescription());
			}
		}
		holder.layout_foodCountSelect
				.setVisibility(mIsBulkPurchase ? View.VISIBLE : View.GONE);
		convertView.setOnClickListener(new ClickListener(product));
		holder.btn_food_count.setText(foodCountMap.get(position) + "");
		holder.btn_food_delete.setOnClickListener(new ClickListener(position));
		holder.btn_food_add.setOnClickListener(new ClickListener(position));
		return convertView;
	}

	class ViewHolder {
		private ImageView img; // 产品图片
		private TextView name; // 名称
		private TextView price; // 价格
		private TextView description_long; // 介绍:长的
		private LinearLayout layout_foodCountSelect;
		private Button btn_food_delete;
		private Button btn_food_count;
		private Button btn_food_add;

	}

	/**
	 * 设置进入批量选购模式
	 */
	public void setBulkPurchase(boolean isShow) {
		mIsBulkPurchase = isShow;
	}

	public boolean getBulkPurchase() {
		return mIsBulkPurchase;
	}

	public void setFoodCountMap(int position, boolean isAdd) {
		int foodCount = foodCountMap.get(position);
		if (foodCount == 0 && !isAdd)
			return;
		foodCountMap.put(position, isAdd ? (foodCount + 1) : (foodCount - 1));
	}

	private class ClickListener implements OnClickListener {

		ViewHolder mViewHolder;
		Product mProduct;
		int mPosition;

		public ClickListener(Product product) {
			this.mProduct = product;
		}

		public ClickListener(int position) {
			this.mPosition = position;
		}

		@Override
		public void onClick(View v) {
			int foodCount = Integer
					.parseInt((String) ((Button) holder.btn_food_count)
							.getText());
			switch (v.getId()) {
			default:
				Intent intent = new Intent();
				intent.setClass(context, FoodDetail_Activity.class);
				context.startActivity(intent);
				break;
			case R.id.btn_food_delete:
				mCallback.dealFoodCount(mPosition, false);
				break;
			case R.id.btn_food_add:
				mCallback.dealFoodCount(mPosition, true);
				break;
			}
		}

	}
	

	public interface FoodCallback {
		// 处理美食份数选择事件
		void dealFoodCount(int pos, boolean isAdd);
	}

	public void setCallback(FoodCallback callback) {
		this.mCallback = callback;
	}


Fragment:

 

 

@Override
	public void dealFoodCount(int position, boolean isAdd) {
		// TODO Auto-generated method stub
		adapter.setFoodCountMap(position,isAdd);
		adapter.notifyDataSetChanged();
		mMainActivity.setSelectedFoodMoney(getSelectedFoodMoney());
	}

 

 

 

 

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android ListView Button 是一种用于处理列表项按钮点击事件的控件。在 ListView ,每个列表项都可以包含一个 Button 控件,用于执行特定的操作。 要在 ListView 添加 Button,需要创建一个自定义的适配器(Adapter),在适配器的 getView() 方法定义每个列表项的布局和按钮的点击事件。 首先,在布局文件定义 ListView,并为每个列表项添加一个 Button。然后,创建一个自定义的适配器类,继承自 BaseAdapter,并实现必要的方法。在适配器的 getView() 方法,使用 LayoutInflater 将列表项的布局文件解析为 View 对象,并为 Button 设置点击事件。 在按钮的点击事件处理方法,可以根据列表项的位置(position)执行不同的操作,例如弹出对话框、跳转到其他页面或执行一些数据处理逻辑。点击事件处理方法可以使用匿名内部类实现,也可以将点击事件处理方法定义为适配器类的内部类或者外部类。 在 Activity ,通过 findViewById() 方法获取 ListView 对象,并为 ListView 设置适配器。这样,当 ListView 的列表项被显示时,按钮点击事件就会被触发,从而执行相应的操作。 总结来说,Android ListView Button 可以通过自定义适配器在每个列表项添加,用于处理按钮的点击事件。通过适配器的 getView() 方法和按钮点击事件处理方法,可以根据列表项的位置执行相应的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值