You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何反转AutoCompleteTextView的建议列表顺序,让首选项靠近输入框

解决方案:反转AutoCompleteTextView的建议列表顺序

没问题,针对你需要把AutoCompleteTextView的建议列表反转,让首选项靠近输入框(因为列表显示在输入框上方)的需求,这里有两个简单可行的方法:

方法1:直接反转数据源数组

这种方法最直观,先把你的字符串数组反转,再传给ArrayAdapter,这样列表显示的顺序就是反转后的:

int layoutItemId = android.R.layout.simple_dropdown_item_1line;
String[] arr = getResources().getStringArray(R.array.items);

// 将数组转为List并反转
List<String> reversedItemList = new ArrayList<>(Arrays.asList(arr));
Collections.reverse(reversedItemList);
// 转回数组
String[] reversedArr = reversedItemList.toArray(new String[0]);

ArrayAdapter<String> adpt = new ArrayAdapter<>(this, layoutItemId, reversedArr);
AutoCompleteTextView autoCompleteView = findViewById(R.id.autoCompleteText);
autoCompleteView.setAdapter(adpt);

方法2:自定义ArrayAdapter重写getItem方法

如果你不想修改原始数据源的顺序,可以自定义一个ArrayAdapter,重写getItem()方法,返回反转位置的项:

int layoutItemId = android.R.layout.simple_dropdown_item_1line;
String[] arr = getResources().getStringArray(R.array.items);

ArrayAdapter<String> adpt = new ArrayAdapter<>(this, layoutItemId, arr) {
    @Override
    public String getItem(int position) {
        // 返回当前位置对应的反转项
        return super.getItem(getCount() - 1 - position);
    }
};

AutoCompleteTextView autoCompleteView = findViewById(R.id.autoCompleteText);
autoCompleteView.setAdapter(adpt);

这两种方法都能实现你要的效果——原来的"Item 1"会出现在列表底部,刚好靠近输入框,完美适配你当前下拉列表显示在输入框上方的布局。而且完全兼容你基于Material文档实现的AutoCompleteTextView逻辑。

内容的提问来源于stack exchange,提问作者vrerabek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:07:36