您好,我在 Android 上的 ListView 中删除项目时遇到问题,我使用的是 xamarin Android,我有一个具有删除按钮的自定义行,但是当我单击它时,删除的是最后一个项目而不是所选项目。
这是我的代码
public override View GetView(int position, View convertView, ViewGroup parent)
{
Button btnDelete;
var item = _items[position];
var view = convertView;
if (view == null)
{
view = _content.LayoutInflater.Inflate(Resource.Layout.CustomRow, null);
view.FindViewById<TextView>(Resource.Id.PostTitle).Text = item.PostTitle;
view.FindViewById<TextView>(Resource.Id.PostMessage).Text = item.PostMessage;
view.FindViewById<TextView>(Resource.Id.PostDate).Text = item.PostDate;
view.FindViewById<TextView>(Resource.Id.AuthorName).Text = item.AuthorName;
view.FindViewById<ImageView>(Resource.Id.PostAvatar).SetImageResource(item.ImageResourceId);
view.FindViewById<TextView>(Resource.Id.Date_Read).Text = item.DateRead;
btnDelete = view.FindViewById<Button>(Resource.Id.btnDelete);
btnDelete.Click += (sender, args) =>
{
var delPos = (int) (((Button) sender).GetTag(Resource.Id.btnDelete));
_items.RemoveAt(delPos);
NotifyDataSetChanged();
};
}
else
{
btnDelete = view.FindViewById<Button>(Resource.Id.btnDelete);
btnDelete.SetTag(Resource.Id.btnDelete, position);
}
return view;
}
或者你们能告诉我如何在 ListView 中获取所选行的 ID,我认为这就是问题所在。
btnDelete.Click += (sender, args) =>
{
var delPos = (int) (((Button) sender).GetTag(Resource.Id.btnDelete));
_items.RemoveAt(delPos);
NotifyDataSetChanged();
};
最佳答案
只要放这行代码就可以解决
view.FindViewById<TextView>(Resource.Id.PostTitle).Text = item.PostTitle;
view.FindViewById<TextView>(Resource.Id.PostMessage).Text = item.PostMessage;
view.FindViewById<TextView>(Resource.Id.PostDate).Text = item.PostDate;
view.FindViewById<TextView>(Resource.Id.AuthorName).Text = item.AuthorName;
view.FindViewById<ImageView>(Resource.Id.PostAvatar).SetImageResource(item.ImageResourceId);
view.FindViewById<TextView>(Resource.Id.Date_Read).Text = item.DateRead;
在 if 语句之外 if(view == null
关于c# - 在 xamarin android 中删除 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25226915/