如何反转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
相关产品推荐
相关产品推荐

