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 22:44] enric_mieza_sanchez |
android_recyclerview [2025/12/31 17:48] (actual) enric_mieza_sanchez [Exercici] |
||
|---|---|---|---|
| Línia 1: | Línia 1: | ||
| ====== Android RecyclerView ====== | ====== Android RecyclerView ====== | ||
| - | '' | + | '' |
| Referències: | Referències: | ||
| Línia 8: | Línia 8: | ||
| * [[Android Camera]] | * [[Android Camera]] | ||
| * [[https:// | * [[https:// | ||
| + | * Un [[https:// | ||
| + | |||
| + | {{tag> #Dam #DamMp08 #DamMp08Uf1 # | ||
| + | |||
| ===== Reciclatge d' | ===== Reciclatge d' | ||
| Línia 42: | Línia 46: | ||
| - layout_height = " | - layout_height = " | ||
| - Canviar al CustomAdapter: | - Canviar al CustomAdapter: | ||
| - | - afegir al '' | + | - Afegir a '' |
| - | String []dataset = { "hola q tral", "com va", " | + | String []dataset = { "hola q tal", "com va", " |
| customAdapter = new CustomAdapter(dataset); | customAdapter = new CustomAdapter(dataset); | ||
| RecyclerView recyclerView = findViewById(R.id.recyclerView); | RecyclerView recyclerView = findViewById(R.id.recyclerView); | ||
| + | RecyclerView.LayoutManager lm = new LinearLayoutManager(this); | ||
| + | recyclerView.setLayoutManager(lm); | ||
| recyclerView.setAdapter(customAdapter); | 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, | ||
| + | - Millorant els '' | ||
| + | - Prova amb la '' | ||
| + | - Modificant els elements del model. Caldrà canviar: | ||
| + | - El propi '' | ||
| + | - El // | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ===== Exercici ===== | ||
| + | <WRAP todo> | ||
| + | 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, | ||
| + | } | ||
| + | </ | ||