2 つのボタン (+/-) を備えたリストビューがあります。それらのいずれかをクリックすると、ボタンの横にあるカウンターが 1 ずつ加算または減算されます。しかし、ボタンをクリックすると、複数の ListView アイテムのカウンターが変化します。
イベントが一度だけ接続されるようにするためにいくつかの方法を試しましたが、今のところ何も機能していないようです。クリック イベントをアダプターの GetView メソッドの外側のリストビュー ボタンに配線する別の方法はありますか? または、同じビューのカウンターのみを変更するように、アダプターに何かが欠けていますか?
public override View GetView (int position, View convertView, ViewGroup parent)
{
var item = _items [position];
View view = convertView;
if (view == null) // no view to re-use, create new
view = _context.LayoutInflater.Inflate (Resource.Layout.list_detailview, null);
view.FindViewById<TextView> (Resource.Id.tvMenuName).Text = item.MenuName;
TextView txtQuantity = view.FindViewById<TextView> (Resource.Id.txtQuantityDrinks);
if (item.First != true)
{
var btnPlus = view.FindViewById<Button> (Resource.Id.btnPlus);
var btnMin = view.FindViewById<Button> (Resource.Id.btnMin);
btnMin.Click += (object sender, EventArgs e) =>
{
item.Ordered--;
txtQuantity.Text = item.Ordered.ToString ();
OrderManager.I.OrderList.Remove (item);
};
btnPlus.Click += (object sender, EventArgs e) =>
{
item.Ordered++;
txtQuantity.Text = item.Ordered.ToString();
OrderManager.I.OrderList.Add(item);
};
item.First = true;
}
view.FindViewById<ImageView> (Resource.Id.imgDetailView).SetImageResource (ResourceManager.I.getResId(item.Icon));
return view;
}