bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


android_recyclerview

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
android_recyclerview [2023/12/18 23:14]
enric_mieza_sanchez [Implementar una RecyclerView] exercici
android_recyclerview [2025/12/31 17:48] (actual)
enric_mieza_sanchez [Exercici]
Línia 58: Línia 58:
   - Que hagis posat un ''LayoutManager'' al codi de l'''Activity'', sense aquest element no funciona el ''RecyclerView'' (l'exemple de la doc oficial no el té).   - Que hagis posat un ''LayoutManager'' al codi de l'''Activity'', sense aquest element no funciona el ''RecyclerView'' (l'exemple de la doc oficial no el té).
   - Que el ''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.   - Que el ''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.
 +  - Vigila que no tinguis elements gràfics dels diferents //layouts// amb un mateix ID, en particular el del ''textView''.
  
 Un cop en funcionament, pots sofisticar la visualització: Un cop en funcionament, pots sofisticar la visualització:
Línia 76: Línia 77:
 El ''dataset'' pot ser una llista d'elements ''File'' que podem llistar de l'espai d'emmagatzematge compartit de la nostra aplicació.  El ''dataset'' pot ser una llista d'elements ''File'' que podem llistar de l'espai d'emmagatzematge compartit de la nostra aplicació. 
 </WRAP> </WRAP>
 +
 +\\
 +
 +===== Implementar onClick (amb funcions lambda) =====
 +
 +La implementació amb **funcions lambda** és més sofisticada, i té l'avantatge de tenir el codi més curt.
 +
 +Per implementar un onClick cal modificar:
 +  * El ''CustomAdapter''
 +  * La instanciació del ''CustomAdapter'' a la ''Activity'' (amb la funció lambda)
 +
 +A l'''Adapter'' afegim un nou atribut ''onItemClick'' al constructor:
 +
 +<file kotlin CustomAdapter.kt>
 +class MyAdapter(
 +    private val dataList: List<String>,
 +    private val onItemClick: (Int) -> Unit
 +) : RecyclerView.Adapter<MyViewHolder>() {
 +    
 +    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
 +        holder.itemView.setOnClickListener {
 +            onItemClick(position)
 +        }
 +    }
 +}
 +</file>
 +
 +A la instanciació de l'''Adapter'' dins la ''Activity'' afegim la funció lambda que ens retorna la ''position'' del l'element clicat:
 +
 +<file kotlin MainActivity.kt>
 +val adapter = MyAdapter(dataList) { position ->
 +    // Manejar el clic aquí
 +    Toast.makeText(this, "Clic: $position", Toast.LENGTH_SHORT).show()
 +}
 +</file>
  
android_recyclerview.1702941284.txt.gz · Darrera modificació: 2023/12/18 23:14 per enric_mieza_sanchez