Пытаюсь реализовать удаление элементов списка по нажатии кнопки в этом же элементе. По факту в массиве удаляется нужный элемент, но выполнение команды 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;
}
посмотрите лучше в сторону RecyclerView. по сути это тот же listview но более оптимизирован. + заставляет реализовывать viewholder что уже избавляет от ряда проблем.
зы recyclerview clickevent
@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();
}
Продвижение своими сайтами как стратегия роста и независимости