¿Cómo filtrar el texto de un Android ListView respaldado por un SimpleCursorAdapter?

Tengo un ListView que es movido hacia atrás por un SimpleCursorAdapter.

Me gustaría ser capaz de filtrar la lista como si fuera una lista de contactos, simplemente escribiendo, y me encontré con el textFilterEnabled ()

El problema es que no podía ver cómo hacerlo funcionar con SimpleCursorAdapter.

¿Es esto posible?
Si es así, ¿Cómo se hace?

El método setTextFilterEnabled() no implementa automáticamente el filtrado, ya que no sabe en qué Cursor debe filtrar el texto.

Este hilo de Android-desarrolladores tiene más detalles.

En realidad, se hizo una buena pregunta el otro día, que en realidad es muy similar a su pregunta; Aunque originalmente estaba preguntando cómo manejar el filtrado cuando no hay teclado físico en un dispositivo:

  • Cómo actualizar dinámicamente un ListView en Android

Para un cursor SimpleCursorAdapter, sólo necesita usar el setFilterQueryProvider, para ejecutar otra consulta para el cursor, en función de 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 agrega una restricción (por ejemplo, utilizando un TextView), el adaptador debe filtrarse:

 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. Voy a tratar de escribir un artículo completo, con código fuente en los próximos días.

Encontré este artículo útil http://es.docs.org/Reece.seam;jsessionid=CE37400B3E545937B70BE2E9F94E78BB?recipeId=404

Básicamente, setTextFilterEnabled(true) en tu listview, y usas setStringConversionColumn() y setFilterQueryProvider() en tu SimpleCursorAdapter .

  • SetItemChecked (posición int, valor booleano) no funciona?
  • Los botones de radio de Android en un listview personalizado cambian su estado cuando desplazamos la lista
  • Problemas de procesamiento Excepción generada durante la renderización: las matrices de color y posición deben tener la misma longitud
  • ListView se rellena desde la parte inferior en lugar de desde la parte superior
  • Botón para mostrar el teclado virtual?
  • Referencia de diseño duplicada en la vista de lista
  • Android: colocar anuncio en la parte inferior de la pantalla
  • ListView Casilla de verificación Guardar estado
  • Android: Utilizar SimpleCursorAdapter para obtener datos de la base de datos a ListView
  • Android - EditTexts dentro de ListView vinculado a Custom ArrayAdapter - manteniendo un registro de los cambios
  • Android EditText en ListView - teclado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.