2015-02-09 3 views
0

Следующий код - это то, что я использую для редактирования текста в простом_list_item_1 listview. Однако при наборе одного символа фильтр будет возвращать все, но ввод второго символа вернет все с помощью этого «шаблона».Android SQL Filterable Запросить возвращаемые результаты, такие как «startswith»

То, что я пытаюсь добиться, это что-то вроде «startswith», так что, когда один символ вводится в edittext, все записи фильтруются для этого символа. Пример. Если я наберу букву A (верхний или нижний регистр), я должен увидеть все записи, начинающиеся с буквы A. И если второй символ. Например, AB печатается, все записи должны фильтроваться в соответствии с AB. Может ли кто-нибудь предложить способ сделать это?

ответ

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); 
    } 
}