Programiranje za Android - Predavanje 3


Preuzimanje projekta sa predavanja

##Sadržaj

Što je to ListView?

Što je to adapter?

Korištenje ListView komponente

Dodatni materijali

##Što je to ListView?

ListView je komponenta koja nam služi za prikaz liste objekata. ListView je posebna komponenta koja vodi računa o memoriji i učitava samo retke koji su vidljivi na ekranu. To je u biti i osnovna razlika između ListView i TableView komponenti. ListView je komponenta koja se često koristi pa na slikama možemo vidjeti i neke primjere aplikacija koje dolaze s Android sustavom.

ListView koristimo kao i ostale komponente koje služe za izradu korisničkog sučelja. ListView možemo izbaciti u layout file gdje definiramo izgled ekrana. Zatim ga u kodu referenciramo isto kao i ostale elemente, a to je uz pomoć metode findViewById.

##Što je to adapter

Adapter je poseban objekt koji je pridružen ListView objektu i ListView iz njega dobiva podatke. U sljedećim primjerima vidjet ćemo jednostavnu i složenu uporabu ListView objekta u kombinanciji s adapterom.

##Korištenje ListView komponente

Primjer jednostavnog korištenja

Najjednostavniji primjer uporabe ListView objekta je prikazan sljedećim dijelom koda:

ListView listView = (ListView)findViewById(R.id.listView);
String objects[] = new String[]{"Objekt 1", "Objekt 2", "Objekt 3", "Objekt 4", "Objekt 5"};
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, objects));


### Primjer složenijeg korištenja

Najprije ćemo napraviti klasu koji predstavlja jedan objekt u tablici. Klasa će imati dva podatka tipa String, a to su nizovi znakova koji predstavljaju pitanje i odgovor.

public class Item {
  String question;
  String answer;
}


Nakon toga napravit ćemo adapter i implementirati metodu getView u kojoj imamo priliku popuniti svaki redak tablice na način na koji želimo.

public class ItemsAdapter extends ArrayAdapter<Item> {

  public ItemsAdapter(Context context, int resource, List<Item> items) {
    super(context, resource, objects);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater li = LayoutInflater.from(getContext());
	    if (convertView == null) {
		       convertView = li.inflate(R.layout.cell, parent, false);
	    }
	    TextView textViewQuestion = (TextView)convertView.findViewById(R.id.textViewQuestion);
	    TextView textViewAnswer = (TextView)convertView.findViewById(R.id.textViewAnswer);
	    Item item = getItem(position);
	    textViewQuestion.setText(item.question);
	    textViewAnswer.setText(item.answer);
	    return convertView;
    }

} <br> ##Dodatni materijali<a name="dodatno"></a>

ListView - Android dokumentacija o ListView komponenti

Google I/O - The world of ListView - Vrijedi pogledati ako vas interesira detaljnije