其他分享
首页 > 其他分享> > android autocompletetextview应该在下拉列表中仅显示相关选项

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