c# - 在 xamarin android 中删除 ListView

标签 c# android android-listview xamarin xamarin.android

您好,我在 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/

相关文章:

c# - 从 C# 配置 *.scr 文件

c# - 此绑定(bind)如何更改我的原始收藏?

c# - 检查 MSTest 单元测试中的输出

android - 未调用 DrawerLayout 中的自定义 BaseAdapter ListView onItemClickListener

android - 如何为android listview设置自定义字体?

c# - 试图让程序等待几秒钟,然后使用 Unity 在 C# 中继续

android - 奇怪的 xml 错误 : Incorrect line ending

android - 保存 Activity 状态-Android

java - 在 Java 中呈现 Android XML 布局

android - 在 Android 中删除 ListView 项目