studio llenar example custom arrayadapter activity android listview android-arrayadapter listadapter

android - llenar - ¿Está bien cambiar dinámicamente un adaptador de ListView?



listview android studio (2)

En lugar de crear múltiples actividades, me gustaría cambiar el ArrayAdapter de ListView según sea necesario. No veo ninguna mención en la API sobre si está bien llamar a setAdapter() más de una vez.

Para ser más específico, digamos que me gustaría comenzar una actividad que tenga un ListView . En este ejemplo, ListView se inicializa con un listView.setAdapter(this) desde, por ejemplo, un CategoryArrayAdapter .

Luego, un usuario selecciona una categoría. Sin iniciar una nueva actividad, el código establecerá un nuevo adaptador para el mismo ListView . El nuevo adaptador, digamos ItemArrayAdapter llama a listView.setAdapter(this) .

¿Alguien tiene experiencia haciendo esto con éxito o conoce una razón específica por la cual no se debe hacer?


No veo ninguna mención en la API sobre si está bien llamar a setAdapter () más de una vez.

La respuesta simple es SÍ, y he hecho cosas similares antes.

Esta es exactamente la razón por la cual el Adapter existe y se proporciona en la API. El contenido real (Modelo) y cómo se representa (Ver) para cada elemento de la lista se aisla y se implementa dentro de android.widget.Adapter, en lugar de estar directamente vinculado a android.widget.AdapterView. Siempre que su adaptador se implemente correctamente, puede cambiar / cambiar el adaptador subyacente real que está vinculado al ListView, simplemente llamando al método setAdapter ().


Restablecer el adaptador está bien, pero tenga en cuenta que puede haber una falla en la GUI al hacerlo, ya que la vista cuyo adaptador se está modificando debe redibujarse con los datos nuevos. Aparte de esto, deberías estar bien.