0

我有一个带有 2 个按钮的 Listview (+/-)。当您单击其中一个时,按钮旁边的计数器会加一或减一。但是当我单击一个按钮时,计数器会在多个 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;
 }
4

0 回答 0