Android Xamarin - 使用ObservableCollection的ListView适配器

3
我可以帮您翻译成中文。这段文字是关于使用Xamarin开发基本Android应用程序的,其中包括ListView和Adapter。但是,当我删除或编辑任何项时,ListView不会自动刷新。我知道ObservableCollection,但我不知道如何在Adapter中使用它。请问有人能帮助我吗?我是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中,但没有帮助。
1个回答

3

您需要调用NotifyDataSetChanged()来告诉ListView它的集合已经改变。

无论在哪里删除/移除List<Meal> items中的项目,请确保之后调用NotifyDataSetChanged()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接