将AutoCompleteTextView绑定到对象数组(ID,NAME)

时间:2014-12-05 11:27:17

标签: c# android object xamarin autocompletetextview

我已经尝试了一段时间来创建一个AutoCompleteTextView,您可以在其中搜索名称,当您从列表中选择一个名称时,控制器应该存储在某个位置(在我的测试中,只需{{{ 1}}结果)。

这是我的代码:

Toast.MakeTest().Show()

这是我将xml元素绑定到控制器的部分,然后我创建了适配器(Persona是一个具有属性int id和String name的Object,暴露了ToString()方法)。

它工作正常,我可以开始写一封信,它会显示建议的名字。

现在我想将属性id绑定到用户选择的名称。 可能吗? 我知道的唯一选择是使用微调器,但我想展示成千上万的名字,所以如果可以的话我会避开旋转器。

如果您看到任何其他解决方案,我会非常感谢,因为我对Xamarin来说很新。

非常感谢。

EDIT。我添加了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;

当我选择一个选项时会触发,问题是autoCompleteSearchName.ItemClick += autoTextViewItemClick;是相对于显示顺序的,并且不以任何方式绑定到我的真实对象的属性。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您必须创建自定义适配器并使用e.Id代替e.Position。不要忘记在适配器中实现Filter

注意:您将无法继承ArrayAdapter,因为您无法访问项目列表或覆盖GetItemId