嗨我在android上的listview中删除项目时遇到问题,我使用xamarin android,我有一个自定义行有delete按钮,但是当我单击它时,删除最后一个项目而不是所选项目。
这是我的密码
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