Tengo un ListFragment
respaldado por un ArrayAdapter
que se rellena con un Loader
. Cuando el usuario hace clic en uno de los elementos, quiero pasar una referencia al elemento seleccionado, así como el resto de los elementos de la lista a otro fragmento. Mi pregunta es ¿cómo debería obtener todos los artículos del adaptador? Estas son las posibilidades que veo:Obtener todos los elementos de un ArrayAdapter
1. Mantener una referencia al respaldo List
Crear el adaptador de esta manera:
List<DomainObject> items = new ArrayList<DomainObject>();
listAdapter = new ArrayAdapter<DomainObject>(getActivity(), R.layout.mine, items);
y luego simplemente pasan items
o una copia de ella a la siguiente actividad
El inconveniente que veo de esto es que estoy confiando en el hecho no documentado de que la misma lista que paso al constructor contiene los elementos más adelante.
2. Iterar a través del adaptador
Cuando se hace clic en un elemento, iterar a través del adaptador y la acumulación de la lista. Esto parece una cantidad innecesaria de trabajo. Los elementos están contenidos en un List
en el adaptador y estoy copiando manualmente cada elemento a una nueva lista.
3. Mantener una lista separada de los elementos cuando se añade al adaptador
Antes de añadir un elemento al adaptador, añadirlo a una lista separada que mantengo en el fragmento. Esto también es un desperdicio ya que la lista de elementos se copia en el ArrayAdapter
y el fragmento.
Aunque ese artículo es bastante bueno, ignoraría su sección de seguridad de hilos enteros. Está completamente equivocado sobre por qué se supone que hay bloqueos (debido al filtrado que ocurre en un hilo de fondo) y que el 'ArrayAdapter' ya se bloqueará si se invoca' notifyDataSetChanged() 'en cualquier cosa que no sea el hilo de UI. –
@ scompt.com Creo que el enlace que ha publicado está mal explicando ArrayAdapter. Parece explicar solo ArrayAdapter. Estoy un poco confundido ... –
theMfromA
En la página que vinculó ... "Solo se puede mostrar texto". => Incorrecto. "Te obliga a proporcionar una lista de elementos de la secuencia de caracteres ..." => Incorrecto "Requiere que proporciones un recurso de diseño que contenga solo una vista de texto" => Incorrecto. Casi todas las suposiciones son incorrectas ... No quiero decir que ArrayAdapter sea mejor que BaseAdapter, pero los conceptos básicos son incorrectos. – Loenix