将自动完成文本视图绑定到对象数组 (ID,NAME)
本文关键字:数组 对象 ID NAME 绑定 视图 文本 | 更新日期: 2023-09-27 18:33:23
我一直在尝试创建一个自动完成文本视图,您可以在其中搜索名称,当您从列表中选择一个名称时,控制器应该存储在某个地方(在我的测试中,只需Toast.MakeTest().Show()
结果就可以了(。
这是我的代码:
List<Persona> personeList = getPersone ();
View view = inflater.Inflate(Resource.Layout.MyFragment, container, false);
var autoCompleteSearchName = view.FindViewById<AutoCompleteTextView> (Resource.Id.autoTextName);
ArrayAdapter<Persona> autoCompleteAdapter = new ArrayAdapter<Persona> (
view.Context,
Android.Resource.Layout.SimpleDropDownItem1Line,
personeList
);
autoCompleteSearchName.Adapter = autoCompleteAdapter;
这是我将 xml 元素绑定到控制器的部分,然后我创建适配器(Persona 是一个具有属性 int id 和 String name 的对象,公开了一个 ToString(( 方法(。
它工作正常,我可以开始写一封信,它会显示建议的名字。
现在,我想将属性 ID 绑定到用户选择的名称。可能吗?我知道的唯一选择是使用微调器,但我想显示数千个名称,以便如果可以的话,我会避免使用微调器。
如果您看到任何其他解决方案,我将不胜感激,因为我对 Xamarin 很陌生。
多谢。
编辑。我添加了autoCompleteSearchName.ItemClick += autoTextViewItemClick;
当我选择一个选项时,这会触发,问题是e.Position
是相对于显示顺序的,并且不以任何方式绑定到我的真实对象的属性。
我错过了什么吗?
您必须创建自定义适配器并使用 e.Id
而不是 e.Position
。不要忘记在适配器中实现Filter
。
注意:您将无法对ArrayAdapter
进行子类化,因为您无法访问项目列表或覆盖GetItemId
。