在Xamarin Android的ArrayAdapter中更新项目的值 更新选项2

问题描述

我有以下表格的列表:

var list = new ArrayAdapter<string>(this,Android.Resource.Layout.SimpleListItem1);
list.Add("George");
list.Add("Abraham");

在Xamarin Android应用中。

如何将列表的第一项从“乔治”修改为“唐纳德”(不创建包含正确项的新列表)?

类似的东西:

list[0] = "Donald"

解决方法

您需要在更新 ListView 的ItemSource之后调用方法NotifyDataSetChanged

NotifyDataSetChangedin Android文档的定义如下

通知附加的观察者基础数据已更改,任何反映该数据集的视图都应刷新自身。

list[0] = "Donald"      
list.NotifyDataSetChanged();

更新

您可以使用如下字符串列表创建适配器

List<string> ItemsSource = new List<string>() {"George","Abraham" };
ItemsSource.Add("Lucas");
var list = new ArrayAdapter<string>(this,Android.Resource.Layout.SimpleListItem1,ItemsSource);
var adapter = listView.Adapter as ArrayAdapter;
adapter.Remove(s[0]);
adapter.Insert("Donald",0);
adapter.NotifyDataSetChanged();

选项2

您可以创建一个自定义适配器(BaseAdapter的子类),以便可以直接设置该值。

,

我们可以使用适配器的清除方法,然后可以再次添加列表。

var list = new List<string> { "George","Abraham" };

var adapter = new ArrayAdapter<string>(this,list);

list[0] = "Donald";

adapter.Clear();
adapter.AddAll(list);