【发布时间】:2018-06-26 14:11:55
【问题描述】:
我正在使用自动完成来显示数据库中的狗列表。
假设我有一个包含 3 个对象的 DogList:Dog1、Dog2、Dog3 和一个字符串数组“dogNames”,其中包含这些狗的每个名字(我正在使用这个数组获取自动完成适配器)。
当在显示完整列表时选择了一个项目时,我可以通过使用自动完成选定索引从 DogList 中获取它来处理选择了哪只狗,因为“DogList”和“dogNames”数组具有相同的大小:
Dog newDog = new Dog();
autoComplete_dogs.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
newDog = dogList.get(i);
}
问题是当我键入 Dog3 并单击它时,选择的索引为 0,这给出了 Dog1 而不是 Dog3,因为 Dog1 在 DogList 中的索引为 0。
我应该如何对 DogList 进行动态排序,使其遵循自动完成结果列表,并且每次尝试使用自动完成索引从 DogList 中获取狗时,我都会得到正确的对象?
【问题讨论】:
-
只有一个列表 - 包含 name 成员的 Dog 对象。
-
自动完成适配器操作需要一个字符串数组。是的,Dog 对象具有 name 属性,
-
@IagoBrayham 你没有排序/更改你的 DogList 这是一个错误的方法。
-
您不需要字符串数组。只需将
Dog数组传递给自定义ArrayAdapter,您只需覆盖其中的getView方法。 -
@kalabalik 我应该对 getView 方法进行哪些更改?
标签: android arrays list autocompletetextview