如何为AutoCompleteTextView设置初始值且保留所有下拉选项?
核心解决方案
使用AutoCompleteTextView.setText(CharSequence text, boolean filter)方法,将第二个参数设为false,避免过滤适配器选项:
int itemPosition = arrayAdapter.getPosition("Car"); if (itemPosition != -1) { productCategoriesAutoCompleteView.setText(arrayAdapter.getItem(itemPosition), false); }
问题原因解析
- 你之前使用的
setText(CharSequence text)默认调用setText(text, true),filter为true时,AutoCompleteTextView会自动过滤适配器内容,仅保留与输入文本匹配的选项,导致其他选项消失。 setSelection(int position)方法无效是因为它的作用是设置文本框内的光标位置,而非选中下拉列表中的项,不适用于Exposed Dropdown Menu的初始选中项设置。
完整初始化代码示例
productCategoriesAutoCompleteView = findViewById(R.id.productCategoryAutoComplete); ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource( this, R.array.product_categories, R.layout.list_item ); productCategoriesAutoCompleteView.setAdapter(arrayAdapter); // 编辑模式下设置初始分类(根据实际业务逻辑判断编辑状态) String targetCategory = "Car"; // 从待编辑产品数据中获取的分类值 int itemPosition = arrayAdapter.getPosition(targetCategory); if (itemPosition != -1) { productCategoriesAutoCompleteView.setText(arrayAdapter.getItem(itemPosition), false); }
设置完成后,下拉框会正常显示初始值,点击时所有选项均可正常选择,与创建表单的交互效果一致。
内容的提问来源于stack exchange,提问作者domartynov
相关产品推荐
相关产品推荐

