RecyclerView
és l'objecte adequat per a visualitzar llargues llistes d'objectes en les darreres versions d'Android. Similarment a Android ListVieẉ però amb un funcionament una mica més sofisticat, la idea segueix sent reciclar les «targetes» de visualització de cada item per estalviar RAM. Seguint el paradigma MVC, necessitarà un objecte intermig Adapter
que ens enllaça la part gràfica amb la part de model.
Referències:
View
intenta seguir un paradigma Model - Vista - Controlador.ArrayList
) connectat directament a la View
(ja sigui ListView
o RecyclerView
).Activity
) o en una classe derivada de la View
.Adapter
. Aquest és l'element que coneix la View
i el nostre Model i que ha de saber com reciclar els ítems per a l'estalvi de RAM.
Intentarem seguir les indicacions de la doc oficial d'Android de RecyclerView, però sovint cal algun hack perquè funcioni del tot:
'Activity
(per exemple activity_main.xml
).TextView
del main template per evitar confusions de IDs, o com a mínim modificar el seu ID amb un nom que no sigui el típic textView
per quelcom més particularitzat.CustomAdapter
Activity.onCreate()
(l'exemple de la doc oficial és incomplert):String []dataset = { "hola q tal", "com va", "tercer element" }; customAdapter = new CustomAdapter(dataset); RecyclerView recyclerView = findViewById(R.id.recyclerView); RecyclerView.LayoutManager lm = new LinearLayoutManager(this); recyclerView.setLayoutManager(lm); recyclerView.setAdapter(customAdapter);
Si no veieu elements de la llista al RecyclerView
, revisa:
LayoutManager
al codi de l'Activity
, sense aquest element no funciona el RecyclerView
(l'exemple de la doc oficial no el té).RecyclerView
no estigui massa ajustat al top del layout de la Activity
. Posa un marge més gran perquè la StatusBar
pot amagar els elements.textView
.Un cop en funcionament, pots sofisticar la visualització:
item_layout.xml
i afegint-hi elements com ImageView
, etc.GridLayoutManager
enlloc del LinearLayoutManager
.dataset
que podria ser un ArrayList
o similar d'objectes amb diversos atributs.CustomLayout
i canviant del String
de l'exemple a l'objecte desitjat.
Implementa una aplicació de captació d'imatges com la descrita a Android Camera que s'enregistrin en l'espai d'emmagatzematge compartit de l'aplicació.
Visualitza les imatges enregistrades en una nova Activity
que visualitzi a mode de «galeria d'imatges» pròpies de la nostra app.
El dataset
pot ser una llista d'elements File
que podem llistar de l'espai d'emmagatzematge compartit de la nostra aplicació.