【问题标题】:Xamarin Android ListView - Delete button fires multiple timesXamarin Android ListView - 删除按钮多次触发
【发布时间】:2017-08-05 04:25:07
【问题描述】:

为我需要能够从中删除的列表视图设置客户适配器。 GetView 看起来像这样,包括我的视图持有者的代码

public override View GetView(int position, View convertView, ViewGroup parent)
    {
        var row = convertView;
        IngredientHolder holder = null;

        if (row == null)
        {
            row = _context.LayoutInflater.Inflate(Resource.Layout.EditableIngredientListViewItem, null);
            holder = new IngredientHolder
            {
                IngredientName = row.FindViewById<EditText>(Resource.Id.editableIngredientNameTextView),
                Measurement = row.FindViewById<EditText>(Resource.Id.measurement),
                DeleteButton = row.FindViewById<ImageButton>(Resource.Id.delete_ingredient)
            };

            row.Tag = holder;
        }
        else
        {
            holder = row.Tag as IngredientHolder;
        }

        var ingredient = IngredientList[position];
        holder.Measurement.Text = ingredient.Measurement;
        holder.IngredientName.Text = ingredient.Name;
        holder.DeleteButton.Click += (sender, args) =>
        {
            IngredientList.RemoveAt(position);
            NotifyDataSetChanged();
        };

        return row;
    }

    private class IngredientHolder : Java.Lang.Object
    {
        public TextView IngredientName { get; set; }
        public TextView Measurement { get; set; }
        public ImageButton DeleteButton { get; set; }
    }

但问题是,当我单击删除按钮时,它会以不同的位置触发多次,最终到达我已从列表中删除项目并且位置值超出范围并且出现异常的点.

从列表视图中删除和移除项目的正确方法是什么?

【问题讨论】:

    标签: c# android xamarin xamarin.android


    【解决方案1】:

    用下面的代码替换代码,这样就不会调用很多次了。

    if (! holder.DeleteButton.HasOnClickListeners)
    {
     holder.DeleteButton.Click += (sender, args) =>
            {
                IngredientList.RemoveAt(holder.AdapterPosition);
                NotifyDataSetChanged();
            };
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      相关资源
      最近更新 更多