Странно обновляется ListView

360
21 декабря 2016, 01:05

Пытаюсь реализовать удаление элементов списка по нажатии кнопки в этом же элементе. По факту в массиве удаляется нужный элемент, но выполнение команды NotifyDataSetChanged();которая по идее обновляет список удаляется последний элемент списка независимо от удаленного элемента. Почему так?Кто нибудь сталкивался?

 public override View GetView(int position, View convertView, ViewGroup parent)
 {
      var item = items[position];
      View view = convertView;
      Button btnDelete;
      if (view == null)
      {
           view = context.LayoutInflater.Inflate(Resource.Layout.item_view, null);
           view.FindViewById<TextView>(Resource.Id.textView1).Text = item.title;        
           btnDelete = view.FindViewById<Button>(Resource.Id.button2);
           btnDelete.Click += (sender, args) =>
           {
               items.RemoveAt(position);                   
               NotifyDataSetChanged();
           };
       }           
       return view;
   }
Answer 1

посмотрите лучше в сторону RecyclerView. по сути это тот же listview но более оптимизирован. + заставляет реализовывать viewholder что уже избавляет от ряда проблем. зы recyclerview clickevent

Answer 2

@Yura Ivanov спасибо. Разобрался как добавлять теги и нашел пример с удалением и добавление события. Вот этот код начал нормально удалять.

public override View GetView(int position, View convertView, ViewGroup parent)
        {
            var item = items[position];
            View view = convertView;
            Button btnDelete;
            if (view == null)
            {
                view = context.LayoutInflater.Inflate(Resource.Layout.item_view, null);
            }  
            view.FindViewById<TextView>(Resource.Id.textView1).Text = item.title;        
            btnDelete = view.FindViewById<Button>(Resource.Id.button2);
            btnDelete.SetTag(Resource.Id.button2, position);
            btnDelete.Click -= MyClickEvent;
            btnDelete.Click += MyClickEvent;
            return view;
        }
        void MyClickEvent(object sender, EventArgs e)
        {
            int i = (int)((Button)sender).GetTag(Resource.Id.button2);
            items.RemoveAt(i);
            NotifyDataSetChanged();
        }
READ ALSO
почему не работает?

почему не работает?

Даны два точечных заряда q1 и q2, расположенные на расстоянии d друг от другаНаписать программу, вычисляющую силу их взаимного притяжения

445
создание asp.net в C# с использованием mongoDB

создание asp.net в C# с использованием mongoDB

Здравствуйтепытаю в VS15 работать с mongoDB, для этого скачал MongoDB

323
Добавить текст в строку

Добавить текст в строку

Есть такая задача: добавить переменную secretCode в строку такого типа OBR|1| Источник//001011//A1100

330
Вернуть null по условию в LINQ

Вернуть null по условию в LINQ

У меня есть ряд элементов типа int?Допустим такой:

355