2012-03-26 18 views
29

En lugar de crear múltiples actividades, me gustaría cambiar el ArrayAdapter del ListView según sea necesario. No veo ninguna mención en el API sobre si está bien o no llamar al setAdapter() más de una vez.¿Está bien cambiar dinámicamente el adaptador de ListView?

Para ser más específicos, supongamos que me gustaría comenzar una actividad que tiene un ListView. En este ejemplo, el ListView se inicializa con un listView.setAdapter(this) de, digamos, 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, por ejemplo ItemArrayAdapter llama al listView.setAdapter(this).

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

Respuesta

30

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.

Este es exactamente el motivo por el cual 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().

1

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

+0

¿Has hecho esto antes? –

+0

@JeffAxelrod: Sí, lo he hecho. – Bondax

Cuestiones relacionadas