【问题标题】:Custom sorting AutoCompleteTextView dropdown hints自定义排序 AutoCompleteTextView 下拉提示
【发布时间】:2014-03-14 10:37:40
【问题描述】:

我有一个 AutoCompleteTextView,它链接到一个标准的 SimpleAdapter。适配器从名为 CITIES 的 ArrayList<Map<String,String>> 加载自动完成值。

现在,当我开始键入 AutoCompleteTextView 时,会发生的情况正确地显示了所有条目,其中包括我已经编写的文本部分。但我想在下拉列表顶部查看以我编写的文本开始的所有项目,然后是按 A-Z 顺序排列的所有其他项目。这是因为如果您正在寻找威尼斯的酒店,您肯定希望 VENICE 位于列表的顶部。

我知道这主要是一个数据问题,我们不应该以如此丑陋的方式检索城市名称,但这就是我们现在所拥有的。所以我的问题是:有没有办法告诉 AutoCompleteTextView 它应该以什么顺序显示下拉列表中的项目?

谢谢

【问题讨论】:

    标签: android drop-down-menu hashmap autocompletetextview simpleadapter


    【解决方案1】:

    您必须在 Android 中编写自定义排序功能。这样您就可以控制元素在列表中的排序方式。看这个答案了解如何编写自定义排序函数:Android java custom sorting using Comparable

    【讨论】:

    • 你好 Alex,我明白你的意思,我想听从你的建议,但我迷路了。我的理解是我应该将我的列表实现为 ArrayList> 其中 SortableMap 实现 Map 和 Comparator 和 SortableCitiesString 实现 Comparable。这样对吗?有没有更简单的方法?谢谢。
    • 实际上,我认为您在 List 中使用 Map 时想多了,尽管我显然不知道确切的应用程序。但我要做的是创建一个实现 Comparable 接口的 List 并将其附加到 AutoCompleteTextView。参考:mkyong.com/java/…developer.android.com/reference/android/widget/… -- 祝你好运!
    • 谢谢亚历克斯!另一个问题:我需要将下拉列表的元素与我一直在 AutoCompleteTextView 中编写的文本进行比较。这是因为如果我写“ven”,我希望 Venice 出现在“Avendics”之前,因为字符串“ven”出现在 Venice 单词的前三个位置 (0,1,2) 和位置 (1,2, 3)在Avendics这个词中。你觉得这可能吗?
    • 您必须从 AutoCompleteTextView 覆盖 ArrayFilter(在 ArrayAdapter 中)。回答这个问题:stackoverflow.com/questions/11574752/…
    • 太好了,结合您指出的来源,我可以看到我得到了我需要的东西。我不得不重写 SimpleAdapter(不是 ArrayAdapter),因为我需要 Map,但你的想法奏效了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多