2010-01-04 31 views

Respuesta

7

El método setTextFilterEnabled() no implementa automáticamente filtrado, ya que no sabe lo que en su Cursor el texto debe ser filtrada en contra.

Este android-developers thread tiene más detalles.

En realidad, hubo una buena pregunta el otro día, que en realidad es muy similar a su pregunta; aunque originalmente estaba preguntando cómo manejar la filtración cuando no hay teclado físico en un dispositivo:

24

Para un cursor SimpleCursorAdapter, sólo es necesario utilizar el setFilterQueryProvider, para ejecutar otra consulta para el cursor, basado en la restricción:

m_Adapter.setFilterQueryProvider(new FilterQueryProvider() { 

    public Cursor runQuery(CharSequence constraint) { 
    Log.d(LOG_TAG, "runQuery constraint:"+constraint); 
    //uri, projection, and sortOrder might be the same as previous 
    //but you might want a new selection, based on your filter content (constraint) 
    Cursor cur = managedQuery(uri, projection, selection, selectionArgs, sortOrder); 
    return cur; //now your adapter will have the new filtered content 
    } 

}); 

Cuando se añade una restricción (. Por ejemplo mediante el uso de un TextView) el adaptador se debe filtrar:

public void onTextChanged(CharSequence s, int start, int before, int count) { 
    Log.d(LOG_TAG, "Filter:"+s); 
    if (m_slvAdapter!=null) { 
    m_Adapter.getFilter().filter(s); 
    } 
} 

Espero que esto ayude. Trataré de escribir un artículo completo, con el código fuente en los próximos días.

+1

Una buena respuesta, una de las pocas que muestra la parte de runQuery con el cursor, sería aún mejor si incluyese un ejemplo de la selección. P.ej. selection = FIELD_NAME_TO_FILTER + "like" "+ constraint.toString() +" '"; – DEzra

+2

¿Cómo debemos llamar un cursor en runQuery si estamos usando una base de datos SQLite? Usar la misma instancia de databaseHelper que la utilizada para crear el cursor para SimpleCursorAdapter me está dando un error de "Invalid statement in fillWindow()". – rohitmishra

+1

¿El estado 'm_slvAdapter' para' m_Adapter'? – r4m

Cuestiones relacionadas