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_listview [2021/10/15 16:07] enrique_mieza_sanchez |
android_listview [2024/10/29 19:06] (actual) enric_mieza_sanchez |
||
|---|---|---|---|
| Línia 2: | Línia 2: | ||
| ====== Utilitzant ListView a Android ====== | ====== Utilitzant ListView a Android ====== | ||
| + | Aquest article segueix del principal [[Android]] en aquesta wiki. | ||
| * '' | * '' | ||
| * Es manté per //backward compatibility// | * Es manté per //backward compatibility// | ||
| - | * Substitut | + | * //Widget// recomanat |
| Referències: | Referències: | ||
| + | * Article [[Android]] en aquesta wiki. | ||
| + | * [[Android RecyclerView]] en aquesta wiki. | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| - | {{tag> #Dam #DamMp08 #DamMp08Uf1 # | + | {{tag> #Dam #DamMp08 #DamMp08Uf1 # |
| ==== Perquè és complicada una ListView? ==== | ==== Perquè és complicada una ListView? ==== | ||
| Línia 26: | Línia 29: | ||
| \\ | \\ | ||
| - | ===== Paradigma | + | ===== MVC ampliat i Adapter ===== |
| - | Tota '' | + | |
| - | + | ||
| - | En Android, degut a que necessitem la gestió del reciclatge dels ítems gràfics, ens apareix un element extra anomenat '' | + | |
| - | + | ||
| - | ===== Utilitzant | + | |
| {{ listview-adapter.jpg? | {{ listview-adapter.jpg? | ||
| + | |||
| + | * Tota '' | ||
| + | * En altres entorns segurament trobaríem una connexió més simple: | ||
| + | * Model de dades (Ex. '' | ||
| + | * El codi de Controlador podria estar en altres objectes de l' | ||
| + | * En Android, degut a que necessitem la gestió del reciclatge dels ítems gràfics, ens **apareix un element extra anomenat '' | ||
| ==== Layouts ==== | ==== Layouts ==== | ||
| Línia 41: | Línia 45: | ||
| ===== Exemple ArrayList simplificat ===== | ===== Exemple ArrayList simplificat ===== | ||
| - | Podeu veure en [[https:// | ||
| - | En aquest | + | * Referència: |
| + | * Exemple d'una taula de rècords | ||
| + | * Utilitza un '' | ||
| + | * No creem una classe derivada de '' | ||
| + | |||
| + | **Segueix abaix per veure el codi** | ||
| + | |||
| + | ==== Connexió (simplificada) Model - Adapter - View ==== | ||
| + | |||
| + | <code java> | ||
| + | public class MainActivity extends AppCompatActivity { | ||
| + | ArrayList< | ||
| + | ArrayAdapter< | ||
| + | |||
| + | @Override | ||
| + | protected void onCreate(Bundle savedInstanceState) { | ||
| + | // Creem llista de records, etc... | ||
| + | |||
| + | // Inicialitzem l' | ||
| + | adapter = new ArrayAdapter< | ||
| + | { | ||
| + | @Override | ||
| + | public View getView(int pos, View convertView, | ||
| + | { | ||
| + | // " | ||
| + | convertView = getLayoutInflater().inflate(R.layout.list_item, | ||
| + | // transferim dades del Model als widgets per a l' | ||
| + | ((TextView) convertView.findViewById(R.id.nom)).setText(getItem(pos).nom); | ||
| + | } | ||
| + | |||
| + | }; | ||
| + | |||
| + | // Connectem Adapter amb la View | ||
| + | ListView lv = (ListView) findViewById(R.id.recordsView); | ||
| + | lv.setAdapter(adapter); | ||
| + | |||
| + | // Creem la resta d' | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| - | ==== Codi taula de rècords ==== | + | ==== Codi complert |
| - | <sxh java> | + | <file java MainActivity.java> |
| package com.example.listilla; | package com.example.listilla; | ||
| Línia 116: | Línia 160: | ||
| @Override | @Override | ||
| public void onClick(View v) { | public void onClick(View v) { | ||
| - | for (int i=0;i<500;i++) { | + | for (int i=0;i<3;i++) { |
| records.add(new Record(100, " | records.add(new Record(100, " | ||
| } | } | ||
| Línia 126: | Línia 170: | ||
| } | } | ||
| - | </sxh> | + | </file> |
| ===== Exercicis ===== | ===== Exercicis ===== | ||
| + | ==== Exercici 1 ==== | ||
| <WRAP todo> | <WRAP todo> | ||
| Implementa el codi d' | Implementa el codi d' | ||
| Línia 137: | Línia 182: | ||
| * Arregla el '' | * Arregla el '' | ||
| * Afegeix al '' | * Afegeix al '' | ||
| - | * Afegeix | + | * Crea un nou // |
| - | * Afegeix un botó amb ID = '' | + | * Transforma el seu layout per defecte a LinearLayout. |
| + | * Afegiex | ||
| + | * Afegeix un botó al //layout// '' | ||
| </ | </ | ||
| + | |||
| + | ==== Exercici 2 ==== | ||
| <WRAP todo> | <WRAP todo> | ||
| - | Randomitza la generació d' | + | Randomitza la generació d' |
| </ | </ | ||
| + | |||
| + | ==== Exercici 3 ==== | ||
| + | <WRAP todo> | ||
| + | Afegeix una imatge als elements de la llista (imatge fixa). Per fer-ho hauràs de: | ||
| + | * Ves a la view de projecte de l' | ||
| + | * Importar una imatge arrossegant-la dins de '' | ||
| + | * Modificar el '' | ||
| + | * Modifica el //layout// del '' | ||
| + | * Pista: pots combinar diversos // | ||
| + | * Afegeix diverses imatges als // | ||
| + | |||
| + | {{ android: | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Exercici 4 ==== | ||
| <WRAP todo> | <WRAP todo> | ||
| Afegeix un botó que ordeni la llista del model, i que refresqui la '' | Afegeix un botó que ordeni la llista del model, i que refresqui la '' | ||