Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
|
android_recyclerview [2023/12/18 23:01] enric_mieza_sanchez [Implementar una RecyclerView] |
android_recyclerview [2026/10/06 22:19] (actual) enric_mieza_sanchez [Implementar una RecyclerView] |
||
|---|---|---|---|
| Línia 8: | Línia 8: | ||
| * [[Android Camera]] | * [[Android Camera]] | ||
| * [[https:// | * [[https:// | ||
| + | * Un [[https:// | ||
| {{tag> #Dam #DamMp08 #DamMp08Uf1 # | {{tag> #Dam #DamMp08 #DamMp08Uf1 # | ||
| Línia 32: | Línia 33: | ||
| ===== Implementar una RecyclerView ===== | ===== Implementar una RecyclerView ===== | ||
| - | Intentarem seguir les indicacions de la [[https:// | + | **Exemple: agenda |
| - | | + | Volem fer una aplicació d' |
| + | |||
| + | Seguirem les indicacions de la [[https:// | ||
| + | |||
| + | Haureu de crear els següents arxius o objectes: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Us deixo algunes pistes per facilitar la implementació: | ||
| + | |||
| + | - Crear un //dataset// d' | ||
| + | * Per les dades podeu crear un array amb 10 noms i un altre amb 10 cognoms i que els vagi combinant aleatòriament entre ells amb un num de telèfon random entre 100000000 i 999999999. | ||
| + | * Crea al menys 40 contactes per comprovar el resultat de la visualització del '' | ||
| + | - Crear classes '' | ||
| + | - Creeu el codi del '' | ||
| + | | ||
| - Eliminar '' | - Eliminar '' | ||
| - | | + | - Afegir |
| - | - Enganxar el codi de la doc | + | * Canvieu la '' |
| - | - Afegir classes necessàries | + | * Afegiu '' |
| - | | + | - Posar-hi el codi del '' |
| - | | + | - Adapteu el codi segons calgui. |
| - | | + | |
| - | - layout_marginleft | + | |
| - | | + | |
| - | - Canviar al CustomAdapter: | + | |
| - | - Afegir | + | |
| - | String []dataset = { "hola q tal", "com va", " | + | |
| - | 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 '' | Si no veieu elements de la llista al '' | ||
| - | - Que hagis posat un '' | + | - Que hagis posat un '' |
| - Que el '' | - Que el '' | ||
| + | - Vigila que no tinguis elements gràfics dels diferents //layouts// amb un mateix ID, en particular el del '' | ||
| Un cop en funcionament, | Un cop en funcionament, | ||
| - | - Millorant | + | - Millorant |
| + | - Prova amb la '' | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ===== Exercicis ===== | ||
| + | |||
| + | <WRAP todo> | ||
| + | **Mini Agenda** | ||
| + | |||
| + | Implementa una agenda de contactes com s'ha descrit mes amunt. | ||
| + | |||
| + | Afegeix un [[https:// | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | **Galeria d' | ||
| + | |||
| + | Implementa una aplicació de captació d' | ||
| + | |||
| + | Visualitza les imatges enregistrades en una nova '' | ||
| + | |||
| + | El '' | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ===== Implementar onClick (amb funcions lambda) ===== | ||
| + | |||
| + | La implementació amb **funcions lambda** és més sofisticada, | ||
| + | |||
| + | Per implementar un onClick cal modificar: | ||
| + | * El '' | ||
| + | * La instanciació del '' | ||
| + | |||
| + | A l''' | ||
| + | |||
| + | <file kotlin CustomAdapter.kt> | ||
| + | class MyAdapter( | ||
| + | private val dataList: List< | ||
| + | private val onItemClick: | ||
| + | ) : RecyclerView.Adapter< | ||
| + | |||
| + | override fun onBindViewHolder(holder: | ||
| + | holder.itemView.setOnClickListener { | ||
| + | onItemClick(position) | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | A la instanciació de l''' | ||
| + | |||
| + | <file kotlin MainActivity.kt> | ||
| + | val adapter = MyAdapter(dataList) { position -> | ||
| + | // Manejar el clic aquí | ||
| + | Toast.makeText(this, | ||
| + | } | ||
| + | </ | ||