[Curs Android] C07 - Liste (IPW 2011)
-
Upload
vlad-petre -
Category
Education
-
view
823 -
download
1
description
Transcript of [Curs Android] C07 - Liste (IPW 2011)
1 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
AndroidModel View Controller, Observer,
liste, adaptoare si reciclare
Vlad PETRE
http://twitter.com/vladpetre88
http://facebook.com/vladpetre88
http://www.linkedin.com/in/vladpetre88
2 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Model View Controller (I)• Architectural Pattern• Separa
– Interfata grafica– Programul in sine– Stocarea datelor
• Avantaje– Programare pe componente– Usor de intretinut
• Dezavantaje– Poate fi lent
3 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Model View Controller (II)
4 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Model View Controller (III)
• Linie continua – asociere directa• Linie intrerupta – asociere indirecta (ex: Observer)
5 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Model View Controller (IV)
6 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Observer (I)
7 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Observer (II)• Design Pattern• Separa
– Obiectul observat– Observator
• Avantaje– Programare pe componente– Usor de intretinut– Schema generalizata
• Dezavantaje– Poate fi lent
8 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Observer – Exemplu (I)
Abonarea la Gmail
9 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Observer – Exemplu (II)
Notificarea
10 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
ListActivity• Activitate specializata pentru o
lista• Poate contine si alte componente• ID-ul listei:
– android:id=“@android:id/list”
• Metode speciale:– onListItemClick(…)– setListAdapter(…)
11 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Adaptor
12 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
ListView• Container vertical• Optimizat pentru miscare• Implicit, avem componente
identice pe fiecare rand• Rolul adaptorului:
– Genereaza aceste componente
• Evenimente:– setOnItemClickListener(…)– setOnItemLongClickListener(…)
13 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Adaptor• Poate fi predefinit:
– ArrayAdapter
• Sau customizat de programator:– Prin implementarea ListAdapter– Extinderea BaseAdapter
14 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Varianta statica cu ArrayAdapter (I)
15 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Varianta statica cu ArrayAdapter (II)
16 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Varianta dinamica cu ArrayAdapter (I)
17 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Varianta dinamica cu ArrayAdapter (II)
18 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Concluzii implementare cu ArrayAdapter
• ListView– Contine o lista– android:id=“@android:id/list”
• Elementele listei– android.R.layout.simple_list_item_1
• Static– Putem utiliza String[]
• Dinamic– Putem utiliza ArrayList<String>
19 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Sa incercam ceva mai complex
20 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Liste cu elemente complexe• Elementele sunt componente de tip container, ce
pot contine:– TextView– ImageView– …
• Adaptor custom-made– Prin implementarea ListAdapter– Extinderea BaseAapter
21 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Extinderea BaseAdapter (I)• public View getView
(int position, View convertView, ViewGroup list);
• public int getCount ();
• public Object getItem(int position) ;
• public long getItemId(int position);
22 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Extinderea BaseAdapter (II)
23 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Extinderea BaseAdapter (III)
24 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Extinderea BaseAdapter (IV)
25 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Extinderea BaseAdapter (V)
26 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Extinderea BaseAdapter (VI)
27 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Reciclare• Reutilizarea Obiectelor• Evitarea crearii de obiecte
– new is bad for memory!
• Utilizam– buffere
28 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Optimizare (I)
29 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Optimizare (II)
30 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Optimizare (III)
31 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Tag-uri (pentru View)• public void setTag(Object tag);• public Object getTag();
32 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Eficient folosind Tag
33 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Referinte• http://pdm.ipworkshop.ro• http://en.wikipedia.org/wiki/Model%E2%80%93vie
w%E2%80%93controller• http://developer.android.com/guide/tutorials/views
/hello-listview.html
34 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Întrebări?