android autocompletetextview应该在下拉列表中仅显示相关选项
作者:互联网
我在代码中使用了AutoCompleteTextView,并使用SimpleCursorAdapter从数据库加载了列表.
AutoCompleteTextView cocktailIngredientView = (AutoCompleteTextView) findViewById(R.id.item);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item, mCursor,
new String[] { "field" },
new int[] { android.R.id.text1 });
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
cocktailIngredientView.setAdapter(adapter);
cocktailIngredientView.setThreshold(0);
它正确填充列表,但我有两个问题:
1.我希望对这个列表进行排序
2.无论输入什么,它都会显示完整列表.我希望它根据列表中的匹配模式进行过滤.例如如果列表包含值Page,Tools …,则如果我在框中输入T,则下拉列表应仅显示Tools.想法是在字符串文本中的任意位置显示包含输入模式的选项.
如何才能做到这一点?请帮忙.
问候,
萨潘
解决方法:
您必须告诉适配器要显示哪些项目.我尝试通过使用FilterQueryProvider
来实现类似于此的操作,该查询在数据库中查询要在下拉列表中显示的项目.
FilterQueryProvider filter = new FilterQueryProvider() {
@Override
public Cursor runQuery(CharSequence constraint) {
// Make a DB query that filters based on the constraint
return //whatever query results;
}
};
myAdapter.setFilterQueryProvider(filter);
至于在列表中选择一个项目时的情况,则必须覆盖SimpleCursorAdapter的CursorToStringConverter
.就像是:
SimpleCursorAdapter.CursorToStringConverter conv = new SimpleCursorAdapter.CursorToStringConverter() {
@Override
public CharSequence convertToString(Cursor cursor) {
int numCol = cursor.getColumnIndexOrThrow("whateverFieldYouNeed");
String term = cursor.getString(numCol);
return term;
}
};
myAdapter.setCursorToStringConverter(conv);
标签:autocompletetextview,options,android,filtering 来源: https://codeday.me/bug/20191102/1993595.html