- Array-a: zerrendan agertu behar duten datuen edukiontzia izango da. String (testuak), int (zenbakiak),...motatakoa izan daiteke.
- ListAdapter-a: datuak listview-ari egokitzeko erabiltzen den elementu edo objektua da.
- Listview-a: interfaze grafikoan, hau da, xml fitxategian kokatu behar dugun widget edo objektu grafikoa da. Zerrendak GUI-an izango duen itxura definituko du (zabalera, altuera, background-a,...).
I. Ilustrazioa: Zerrenda sinple baten App-a |
App-aren interfazea honako kodeak definituko du soilik:
<ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content" />
Garrantzitsua da azpimarratzea ListView objektu bat erabiltzen denean bere id-a defektuz kodean agertzen den moduan uztea dela, hau da, android:id="@id/android:list" bezala. Modu honetan Listview batek dauzkan funtzionalitate guztiak aprobetxatuko ditugu; ostera errore bat emango du.
App-aren logikari dagokionez kode hau erabiliko da:
package com.example.zerrendasinplea; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends ListActivity { private String[] datuak = new String[] {"ELEKTRONIKA","INFORMATIKA","ELEKTRIZITATEA"}; private ListView zerrenda = null; private ListAdapter arrayadapterra = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); zerrenda = (ListView)findViewById(android.R.id.list); arrayadapterra = new ArrayAdapterLehenengo eta behin ohartu MainActivity ez dela dagoeneko Activity-tik zabaltzen, baizik eta ListActivity-tik. Modu honetan lista edo zerrenda batekin erabil ditzakegun metodo eta funtzio ezberdinak eskuragarri izango ditugu, adibidez aurrerago erabiliko dugun onListItemClick.(this,android.R.layout.simple_list_item_1,datuak); zerrenda.setAdapter(arrayadapterra); } protected void onListItemClick (ListView l, View v, int position, long id) { if(position==0) { Toast.makeText(this, datuak[position], Toast.LENGTH_SHORT).show(); } if (position==1) Toast.makeText(this, datuak[position], Toast.LENGTH_SHORT).show(); if (position==2) { Toast.makeText(this, datuak[position], Toast.LENGTH_SHORT).show(); } } }
onCreate-n sartu baino lehen aurretik aipatutako 3 elementuak (array-a, ListAdapter-a eta Listview-a) izendatu eta deklaratzen dira.
private String[] datuak = new String[] {"ELEKTRONIKA","INFORMATIKA","ELEKTRIZITATEA"}; private ListView zerrenda = null; private ListAdapter arrayadapterra = null;Ondoren eta onCreate-ren barnean, behin interfaze grafikoa setContentView-ren bitartez bistaratu eta gero, Listview-a erreferentziatzen da, ListAdapter-a prestatzen da datuak eta datu horiek erakusteko erabiliko duen xml plantilla atxikituz (kasu honetan xml plantilla androidek defektuz ekartzen duen simple_list_item_1 da, soilik TextView bat du bere barnean) eta azkenik Listadapter-a Listview-ari ezartzen zaio.
zerrenda = (ListView)findViewById(android.R.id.list); arrayadapterra = new ArrayAdapterHonekin nahikoa litzateke zerrenda erabiltzaileari erakusteko. Orain gelditzen dena zera da, erabiltzaileak zerrendaren gainean klik egiten duenean App-eak erantzun bat ematea.(this,android.R.layout.simple_list_item_1,datuak); zerrenda.setAdapter(arrayadapterra);
Programatzen ari garen activity-a ListActivity-tik zabaldu denez, onListItemClick metodoa erabil dezakegu helburu horretarako. Erabiltzaileak zerrendan klik egiten duen bakoitzean metodo honi deituko zaio. Metodo hau aukeratutako listako elementuaren posizioa antzemateko gai da besteak beste, kasu honetan position aldagaian gordeko da posizioaren int zenbakia (lehenengo posizioa 0 posizioa da, bigarrena 1 eta horrela hurrenez hurren azkeneraino!). Hori kontuan hartuz if batzuk erabiliz Toast batzuk erabiliko dira datuen array-aren bidez (array-en lehenengo posizioa ere 0 izaten da!) aukeratutako zerrendako posizioko testua erakusteko.
protected void onListItemClick (ListView l, View v, int position, long id) { if(position==0) { Toast.makeText(this, datuak[position], Toast.LENGTH_SHORT).show(); } if (position==1)//enlazar una web Toast.makeText(this, datuak[position], Toast.LENGTH_SHORT).show(); if (position==2)//enlazar con una llamada-dar permisos en manifest de ACTION_CALL { Toast.makeText(this, datuak[position], Toast.LENGTH_SHORT).show(); } }