Я создал собственный список в C#, он работает нормально. Проблема, с которой я сталкиваюсь, состоит в том, что список содержит более 50 записей. Для удаления записи я использую кнопку удаления. Когда я нажимаю кнопку «Удалить», открывается окно с запросом подтверждения. Все эти вещи работают нормально до первых 10 записей в списке, когда я прокручиваю список до конца и нажимаю кнопку удаления, там только проблема начинается, в окне предупреждения, когда я нажимаю кнопку ОК, она не закрывается, вместо этого он продолжает перемещаться к другим элементам списка. После 2 или 3 щелчков мышью закрывается только окно предупреждения, есть ли способ решить эту проблему
using System.Collections.Generic;
using Android.App;
using Android.Views;
using Android.Widget;
using MyAndroid.Models;
namespace MyAndroid.Adapter
{
class UserListAdapter : BaseAdapter<User>
{
private Activity context;
private List<User> users;
public override int Count
{
get
{
return users.Count;
}
}
public override User this[int position]
{
get
{
return users[position];
}
}
public UserListAdapter(Activity context, List<User> users)
{
this.context = context;
this.users = users;
}
public override long GetItemId(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var view = convertView;
if (view == null) {
view = context.LayoutInflater.Inflate(Resource.Layout.userlayout, parent, false);
var name = view.FindViewById<TextView>(Resource.Id.nameTextView);
var deleteUser = view.FindViewById<ImageView>(Resource.Id.userDelete);
var addUser = view.FindViewById<ImageView>(Resource.Id.userAdd);
view.Tag = new ViewHolder() { Name = name, btnDelete = deleteUser, btnAdd = addUser };
}
var holder = (ViewHolder)view.Tag;
holder.id = users[position].Id;
holder.Name.Text = users[position].LastName;
holder.btnDelete.Click += (sender, args) =>
{
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
AlertDialog alert = dialog.Create();
alert.SetTitle("Delete");
alert.SetMessage("Are you sure you want to delete this user");
alert.SetButton("OK", (c, ev) =>
{
Toast.MakeText(context, "You going to delete " + holder.id + " " + users[position].FirstName + " " + users[position].LastName, ToastLength.Long).Show();
alert.Dismiss();
alert.Hide();
});
alert.SetCancelable(true);
alert.Show();
};
return view;
}
}
public class ViewHolder : Java.Lang.Object
{
public int id { get; set; }
public TextView Name { get; set; }
public ImageView btnDelete { get; set; }
public ImageView btnAdd { get; set; }
}
}
Это журнал отладки, который я получаю
I/chatty (31411): uid=10087(com.companyname.myandroid) RenderThread identical
7 lines
01-22 10:16:30.056 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:31.431 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:31.688 I/chatty (31411): uid=10087(com.companyname.myandroid)
RenderThread identical 34 lines
01-22 10:16:31.690 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:31.730 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:31.784 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:31.787 D/OpenGLRenderer(31411): endAllActiveAnimators on
0xc0ea1000 (RippleDrawable) with handle 0xc48bc0d0
01-22 10:16:31.857 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:32.678 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:32.733 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:32.738 D/OpenGLRenderer(31411): endAllActiveAnimators on
0xc12bd900 (RippleDrawable) with handle 0xc48bc0c0
01-22 10:16:32.819 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:33.802 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:33.825 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:33.828 D/OpenGLRenderer(31411): endAllActiveAnimators on
0xc12bd200 (RippleDrawable) with handle 0xc232df60
01-22 10:16:33.908 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)
01-22 10:16:33.916 D/EGL_emulation(31411): eglMakeCurrent: 0xe03055a0: ver 3 0
(tinfo 0xc59d65e0)