He creado una vista de lista en Android y quiero agregar texto de edición encima de la lista y cuando el usuario ingrese texto, la lista se filtrará de acuerdo con la entrada del usuario
¿Alguien puede decirme por favor si hay una manera de filtrar el adaptador de lista en Android?
Respuestas:
Agregue un EditText en la parte superior de su vista de lista en su archivo de diseño .xml. Y en tu actividad / fragmento ..
Lo básico aquí es agregar un OnTextChangeListener a su texto de edición y dentro de su método de devolución de llamada, aplique el filtro al adaptador de su listview.
EDITAR
Para obtener un filtro para su BaseAdapter personalizado, necesitará implementar una interfaz filtrable .
Dentro de performFiltering () necesita hacer una comparación real de la consulta de búsqueda con los valores en su base de datos. Pasará su resultado al método publishResults () .
fuente
Implemente su adaptador Filtrable:
luego crea tu clase de filtro:
De esta manera, su adaptador es filtrable, puede pasar el elemento del filtro al filtro del adaptador y hacer el trabajo. Espero que esto te sea de ayuda.
fuente
En caso de que alguien todavía esté interesado en este tema, creo que el mejor enfoque para filtrar listas es crear una clase de filtro genérica y usarla con algunas técnicas básicas de reflexión / genéricas contenidas en el paquete SDK de la vieja escuela de Java. Esto es lo que hice:
Y luego, lo único que debe hacer es crear el filtro como una clase miembro (posiblemente dentro de la vista "onCreate") pasando su referencia de adaptador, su lista y el método que se llamará para el filtrado:
Lo único que falta ahora es anular el método "getFilter" en la clase del adaptador:
¡Todo listo! Debe filtrar su lista con éxito: por supuesto, también debe implementar su algoritmo de filtro de la mejor manera que describa su necesidad, el código a continuación es solo un ejemplo. . Espero que haya ayudado, cuídate.
fuente