嗨我在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

07-24 09:47
查看更多