.net - Android Xamarin - 带有 ObservableCollection 的

我正在通过 Xamarin 开发基本的 Android 应用程序,其中我在 Adapter 中设置了 ListView 和 ListItem。但是当我删除或编辑任何项目时, ListView 不会自行刷新。我知道 ObservableCollection,但我不知道如何将它与适配器一起使用。有谁可以帮助我吗?我是 Xamarin 的新手。

适配器:

public class MealsAdapter : BaseAdapter<Meal>
{
    List<Meal> items;
    Activity context;

    public MealsAdapter(Activity context, List<Meal> items)
        : base()
    {
        this.context = context;
        this.items = items;
    }

    public override Meal this[int position]
    {
        get
        {
            return items[position];
        }
    }

    public override int Count
    {
        get
        {
            return items.Count;
        }
    }

    public override long GetItemId(int position)
    {
        return position;
    }

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        var item = items[position];

        View view = convertView;
        if (view == null)
            view = context.LayoutInflater.Inflate(Resource.Layout.MealListItem, null);
        view.FindViewById<TextView>(Resource.Id.textViewNazev).Text = item.Name;
        view.FindViewById<TextView>(Resource.Id.textViewBilkoviny).Text = context.Resources.GetString(Resource.String.BilkovinyNadpis) + ": " + item.Bilkoviny.ToString();
        view.FindViewById<TextView>(Resource.Id.textViewSacharidy).Text = context.Resources.GetString(Resource.String.SacharidyNadpis) + ": " + item.Sacharidy.ToString();

        return view;
    }
}

ListView :

ListView listView;     
protected override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState);
                SetContentView(Resource.Layout.MealsSettings);

                listView = FindViewById<ListView>(Resource.Id.listViewJidlo);

                listView.Adapter = new MealsAdapter(this, DataStorage.meallist);
                listView.ItemClick += ListView_ItemClick;
            }

DataStorage.meallist 是简单的列表。我已经尝试将 ObservableCollection 放入适配器和 DataStorage.meallist,但它没有帮助。

最佳答案

您需要调用 NotifyDataSetChanged()ListView知道它的集合改变了。

无论您在何处删除/删除 List<Meal> items 中的项目请务必调用 NotifyDataSetChanged()之后。

关于.net - Android Xamarin - 带有 ObservableCollection 的 ListView 适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41337095/

相关文章:

apache-spark - Spark 溢出独立于分配的执行程序内存

sprite-kit - SpriteKit : calculate distance betwee

hdf5 - dask 和并行 hdf5 写入

cherrypy - 更改 Content-Type 后返回的内容未自动编码

Ansible - 使用用户输入选择变量

wpf - 在其 winforms 父级中拖动托管 WPF 控件吞噬的事件

angularjs - 在 Controller 函数之外的脚本中读取 AngularJS 表达式

apache-spark - 自定义 log4j 类不适用于 spark 2.0 EMR

android - 使用 DownloadManager.Request 从 url 下载文件时下载

C - do/while 循环和 switch(int)。输入 char 值会导致 inf。环形