Liste

ListView

Un ListView este un View care contine o lista de elemente, care poate fi parcursa. Un View de tip ListView poate fi plasat pe orice tip de activitate. In mod normal, descriem ListView-ul in fisierul xml atasat activitatii, ii dam un id si in codul java luam un pointer catre el.

Elementul de tip ListView are urmatoarele caracteristici:

  • Container vertical
  • Contine componente identice pe fiecare rand
  • Ofera evenimente precum:
    • setOnItemClickListener()
    • setOnItemLongClickListener()
  • suporta proprietati precum:
    • android:choiceMode
    • android:textFilterEnabled
<ListView
            android:id="@+id/listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:choiceMode="singleChoice" >
</ListView>

ListActivity

  • extinde Activity
  • activitate specializata pentru o lista, dar poate contine si alte elemente

Exista un mod mai simplu decat folosirea unui ListView. In general, pe o activitate exista o singura lista, astfel ca Android ne pune la dispozitie un tip special de activitate, numit ListActivity, care rezolva automat preluarea pointer-ului listei. In XML, trebuie declarat obligatoriu un ListView cu id-ul @android:id/list.

*id-ul listei este mereu acelasi : android:id=“@android:id/list“

  • suporta metode speciale, cum ar fi:
    • setOnItemClickListener()
    • setListAdapter()
    • getListView()
// seteaza adaptorul pentru lista de pe fereastra
void setListAdapter (ListAdapter adapter);
 
// intoarce adaptorul listei de pe fereastra
ListAdapter getListAdapter ();
 
// intoarce un pointer catre lista din fereastra
ListView getListView ();

O alta functie oferita de catre ListActivity este onListItemClick(). Acesta este apelata automat de fiecare data cand se executa un click asupra unui element din lista. Initial functia este vida, in alte cuvinte, nu face nimic. Pentru a-i adauga o actiune, programatorul trebuie sa suprascrie acesta functie.

 @Override
    public void onItemClick (AdapterView<?> adaptor, View v, int position, long id)
    {
        // list - este lista de pe fereastra
        // v - este elementul din lista pe care s-a dat click
        // position - este pozitia pe care s-a dat click (de fapt pozitia la care se afla elementul v in lista)
        // id - este id-ul elementului (obtinut prin functia getItemId () a adaptorului)
    }

Exemplu

XML: activity_list_example

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" /> 

JAVA: Listaexemplu

package com.example.listexemplu;
 
import java.util.ArrayList;
 
import android.app.ListActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
 
public class Listaexemplu extends ListActivity {
 
	ListView lista;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_listaexemplu);
 
		lista = (ListView) findViewById(android.R.id.list);
 
		ArrayList<String> nume = new ArrayList<String>();
		nume.add("Maria"); nume.add("Diana");
 
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, nume);
		setListAdapter(adapter);
 
		lista.setOnItemClickListener(new OnItemClickListener() {
 
			@Override
			public void onItemClick(AdapterView<?> adaptor, View arg1, int position,
					long id) {
				// TODO Auto-generated method stub
				Toast.makeText(Listaexemplu.this, "Ai apasat-o pe "+ adaptor.getItemAtPosition(position), Toast.LENGTH_SHORT).show()	;
			}
 
		});	
	}
 
}

Probleme

-Sa se creeze o lista cu retete de prajituri. La apasarea unui element din lista se va deschide o noua fereastra care va contine titlul, descrierea si o poza a retetei. Titlul se va trimite din activitatea precedenta.
Adaugati sub descrierea listei un RatingBar, pentru ca utilizatorul sa dea o nota retetei respective.

-Creati un nou proiect in care sa aveti o lista de cumparaturi.
Realizati in partea de jos a ecranului un buton pentru introducerea unui item nou.
In cazul unui long press pe un item, eliminati item-ul din lista

Bonus

- La primul exercitiu, adaugati la finalul aceleiasi ferestre o interfata de feedback pentru reteta respectiva.

-La al doilea exercitiu, oferiti posibilitatea ca in momentul in care se doreste stergerea unui element, utilizatorul sa confirme sau sa anuleze actiunea.

introducere_android/curs/curs5.txt · Ultima modificare: 2013/08/12 10:21 de către diana.popescu
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0