以下代码是我在simple_list_item_1 listview中用于编辑文本的代码。但是,当键入单个字符时,过滤器将返回everthing,但键入第二个字符将返回带有" pattern"的所有内容。
我想要实现的目标是,"从..."这样当在edittext中输入单个字符时,将对该字符过滤所有条目。例如,如果我键入字母A(大写或小写),我应该看到所有以字母A开头的条目。如果是第二个字符。例如,输入AB,所有条目都应按照AB进行过滤。任何人都可以建议一种方法来实现这一目标吗?
public Cursor getFlavorsList (CharSequence constraint) {
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
queryBuilder.setTables(
DATABASE_TABLE2
);
String asColumnsToReturn[] = {
KEY_ROWID, KEY_NAME
};
if (constraint == null || constraint.length () == 0) {
// Return the full list
return queryBuilder.query(mDB, asColumnsToReturn, null, null,
null, null, DATABASE_TABLE2);
} else {
String value = "%"+constraint.toString()+"%";
return mDB.query(DATABASE_TABLE2, asColumnsToReturn, "KEY_NAME like ? ", new String[]{value}, null, null, null);
}
答案 0 :(得分:0)
那个人让我一两个小时,但这是获得你想要的结果的方法。这将过滤输入的第一个字符,而不是像你说的那样返回模式。例如,键入A,只显示“A”列表。输入B,只显示“B”列表。这也不区分大小写。
差异在于约束前面的“%”。
public Cursor getflavorlist (CharSequence constraint) {
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
queryBuilder.setTables(
DATABASE_TABLE2
);
String asColumnsToReturn[] = {KEY_ROWID,KEY_NAME};
if (constraint == null || constraint.length () == 0) {
// Return the full list
return queryBuilder.query(mDb, asColumnsToReturn, null, null,
null, null, KEY_NAME);
} else {
String value = ""+constraint.toString()+"%";
return mDb.query(DATABASE_TABLE2, asColumnsToReturn, "name like ? ", new String[]{value}, null, null, null);
}
}