ListView este unul dintre cele mai utile controale de vizualizare disponibile pe platforma Android pentru afișarea unor cantități variabile de date. În acest tutorial Mobiletuts +, vă vom arăta cum să utilizați un ListView pentru a căuta o listă de articole!
În ultimele câteva luni, ați văzut multe tutoriale care să acopere diferite controale de aspect. Veți utiliza mai multe dintre acestea împreună cu un ListView în tutorialul de astăzi. Aplicația însăși va fi foarte simplă: va afișa o listă a titlurilor articolelor care, atunci când se face clic, afișează conținutul articolului. Pacing-ul acestui tutorial va fi mai rapid decât unele dintre tutorialele noastre de început; este posibil să fiți nevoit să revedeți câteva dintre celelalte tutoriale ale noastre pe acest site sau chiar pe referințele Android API dacă nu sunteți familiarizați cu controalele sau conceptele de bază Android. Ultimul cod open-source este disponibil pentru descărcare prin găzduirea codului Google.
Creați un nou proiect Android în Eclipse. Am numit MT-Lista noastră, cu o activitate de start numită TutListActivity. Această activitate trebuie să extindă clasa ListActivity, care este o clasă de activitate specială care ajută la gestionarea unui control ListView. Folosim un nivel API țintă de 10 (Android 2.3.3).
De fapt, aici este foarte puțină lucrare de proiectare. Un control ListView constă în repetarea elementelor, fiecare având același aspect (un șablon pentru un element). Vrem să afișăm o listă cu titlurile articolelor. Fiecare titlu va fi un singur element în ListView. Prin urmare, șablonul pentru fiecare element de listă trebuie să aibă doar un control TextView. Adăugați un fișier resursă de structură nouă în proiectul named list_item.xml, care reprezintă aspectul șablonului pentru fiecare element din listă. În acest caz, ar trebui să arate astfel:
Dimensiunea textului plus atributele de umplutură asigură că fiecare element din listă este o țintă atinge suficient de mare pentru degetul uman mediu pe un ecran cu dimensiuni medii?
Comenzile ListView sunt concepute pentru a încărca date dintr-o sursă de date. Un adaptor poate fi folosit pentru a citi dintr-o bază de date, o matrice sau o altă sursă de date. Vom utiliza o implementare de matrice pentru această aplicație. Mai târziu, ați putea oricând să înlocuiți matricea cu un fel de sursă de date live. Creați două resurse cu șir de șir în proiectul dvs. (le puteți adăuga în fișierele strings.xml sau într-un fișier arrays.xml separat, alegerea dvs.). Denumiți un tabel "tut_titles" și celălalt "tut_links". Completați matricele cu titluri valide și adrese URL valide de pe site-ul Mobiletuts +. Iată machetele noastre:
- Proiectați și construiți o aplicație telefonică iOS din anii 1980: Design Comp Slicing
- Cel mai bun din Tuts + în februarie 2011
- Creați un joc de întrerupere a caramizilor cu ajutorul programului Corona SDK: Controale joc
- Exportarea graficii pentru aplicațiile mobile: PNG sau JPEG?
- Android Tablet Design
- Creați o aplicație de comandă pentru pizza mobil Titanium: configurare formular de comandă
- Creați un joc Breaker de caramida cu Corona SDK: Setarea aplicației
- Setările pentru dispozitive virtuale Android Tablet
- Construiți o aplicație de comandă pentru pizza mobil Titanium: Topping Selection
- Proiectați și construiți o aplicație telefonică iOS din anii 1980: setarea pentru crearea interfeței
- http://mobile.tutsplus.com/tutorials/mobile-design-tutorials/80s-phone-app-slicing/
- http://mobile.tutsplus.com/articles/news/best-of-tuts-in-february-2011/
- http://mobile.tutsplus.com/tutorials/corona/create-a-brick-breaker-game-with-the-corona-sdk-game-controls/
- http://mobile.tutsplus.com/tutorials/mobile-design-tutorials/mobile-design_png-or-jpg/
- http://mobile.tutsplus.com/tutorials/android/android-tablet-design/
- http://mobile.tutsplus.com/tutorials/appcelerator/build-a-titanium-mobile-pizza-ordering-app-order-form-setup/
- http://mobile.tutsplus.com/tutorials/corona/corona-sdk_brick-breaker/
- http://mobile.tutsplus.com/tutorials/android/android-sdk_tablet_virtual-device-configuration/
- http://mobile.tutsplus.com/tutorials/appcelerator/pizza-ordering-app-part-2/
- http://mobile.tutsplus.com/tutorials/iphone/1980s-phone-app_interface-builder-setup/
Aceste date sunt, desigur, statice. În unele cazuri, utilizarea datelor statice poate avea sens pentru un ListView. Utilizarea unei resurse de șir de caractere pentru aceste cazuri se dovedește a fi foarte ușoară și convenabilă. Doar asigurați-vă că ordonarea titlurilor și a legăturilor acestora este identică, astfel încât indicii matricei se potrivesc.
Acum că aplicația are date, este timpul să o afișăm. Înapoi în TutListActivity.java, modificați onCreate ()
metoda de utilizare a setListAdapter ()
metodă de încărcare a datelor. Spre deosebire de activitățile obișnuite, o ListActivity nu are nevoie de utilizarea setContentView ()
pentru cazurile în care întreaga activitate este doar un ListView. Când ați terminat, întregul dvs. ListActivity va arăta astfel:
clasa publică TutListActivity extinde ListActivity @Override public void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setListAdapter (ArrayAdapter.createFromResource (getApplicationContext (), R.array.tut_titles, R.layout.list_item));
În acest moment, puteți rula aplicația. Veți vedea un ListView cu toate titlurile tutorialelor. Derularea în sus și în jos funcționează conform așteptărilor. Cu toate acestea, faceți clic pe un titlu nu face nimic încă.
Manipularea clicurilor pe elementele dintr-un ListView se face în mod similar cu alte obiecte Vizualizare: utilizând un ascultător. În acest caz, suntem interesați de OnTimeClickListener
. S-ar putea să fi observat că nu am tratat direct obiectul ListView. Acum e momentul. Într - o ListActivity, pur și simplu faceți un apel la getListView ()
pentru a recupera ListView și apoi apelarea setOnItemClickListener ()
și implementați-o într-un singur pas:
getListView () setOnItemClickListener (noul OnItemClickListener () @Override public void onItemClick (AdapterView> părinte, vizualizare vizualizare, poziție int, id lung) // TBD);
onItemClick ()
metoda va fi apelată de fiecare dată când utilizatorul face clic pe un anumit element din ListView. În mod convenabil, acesta trece în mai mulți parametri utili, dintre care unul va fi necesar pentru lansarea activității de vizualizare. Așteaptă ce activitate de vizionare?
Buna intrebare. Să creăm o activitate de vizualizare acum! Această activitate va fi utilizată pentru a afișa conținutul tutorialului utilizatorului. Creați o nouă clasă prin extinderea activității și denumiți-o TutViewerActivity.java. Creați un fișier resursă de aspect pentru el, care are exact un element: un control WebView. Fișierul de aspect trebuie să arate astfel:
În cadrul onCreate ()
metoda clasei TutViewerActivitate, sunați la setContentView ()
metodă și să treacă în acest aspect. În cele din urmă, nu uitați să adăugați activitatea la fișierul AndroidManifest.xml.
Schimbați atenția înapoi la TutListActivity pentru o clipă. Să ne uităm la ce trebuie să facem pentru a lansa activitatea de vizionare cu link-ul corespunzător al articolului. În interiorul onItemClick ()
metoda, poziția elementului pe care a fost făcut clic este trecut ca un element int
valoarea de tip. Acesta este exact ceea ce avem nevoie pentru a accesa o serie de link-uri de articole.
Valorile șirului din matricea de link-uri sunt adrese URL. O modalitate convenabilă de a transmite o adresă URL unei alte activități este prin adăugarea unui Uri la intenție prin intermediul setData ()
metodă. Aici este finala onItemClick ()
implementare care inițiază activitatea de vizualizare, trecând la adresa URL corespunzătoare:
@Override publice void onItemClick (AdapterView> părinte, vizualizare Vizualizare, poziție int, id lung) Conținut șir = link-uri [poziție]; Intenția showContent = intenția nouă (getApplicationContext (), TutViewerActivity.class); showContent.setData (Uri.parse (conținut)); startActivity (showContent);
Dacă vă lipiți doar la sfârșitul anului onCreate ()
, veți observa că variabila legăturilor nu este definită încă. Deoarece va fi folosit în clasa OnItemClickListener, variabila trebuie să fie o valoare finală, ca de exemplu:
ultimul String [] link = getResources () getStringArray (R.array.tut_links);
Această linie trebuie plasată înaintea definiției OnItemClickListener. Da, ați fi putut fi o variabilă membru fără a fi finală. Pentru un caz mai complex, ar fi chiar necesar. Dar, în acest caz, putem păstra de fapt întregul cod în cadrul metodei.
În acest moment, dacă rulați aplicația, veți obține un ecran alb vizualizat. Activitatea este lansată corect, dar trebuie să mergem în sus pentru activitatea de vizualizare pentru a încărca URL-ul în controlul WebView.
Întoarceți-vă atenția înapoi la TutViewerActivity.java. După setContentView ()
apelați, adăugați un cod pentru a prelua Uri din intenția trecută și ao converti la o variabilă String. Apoi adăugați un apel la loadUrl ()
metodă a clasei WebView. Întreaga clasă TutViewerActivity va arăta astfel:
clasa publică TutViewerActivity extinde Activitatea @Override public void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.tut_view); Intenția de lansareIntent = getIntent (); String content = lansareaIntent.getData (). ToString (); Vizualizatorul WebView = (WebView) findViewById (R.id.tutView); viewer.loadUrl (conținut);
Rulați aplicația acum. Funcționează? Nu încă! Un ultim detaliu: trebuie să adăugați permisiunea de Internet pentru fișierul AndroidManifest.xml. Acum rulați aplicația. Veți vedea acum că implementarea funcționează:
Experiența, așa cum este, funcționează. Un ListView prezintă toate titlurile articolelor, un utilizator poate să facă clic pe un anumit element din listă și să fie redirecționat către o activitate cu un WebView pentru a afișa adresa URL corespunzătoare. Unele îmbunătățiri pe care le puteți lua în considerare pentru această implementare de bază includ:
Alte tutoriale Android de pe acest site vă vor învăța cum să efectuați multe din aceste funcții opționale. Altele ar trebui să vă descoperiți - sau să întrebați în comentarii!
Widgetul ListView este o modalitate rapidă de organizare a datelor într-un format de listă pe ecran. Doar am zgâriat suprafața controlului ListView în acest tutorial. Cu toate acestea, ați învățat elementele de bază ale: crearea obiectelor de listă, lucrul cu adaptoarele de date și gestionarea clicurilor pentru elementele listate.
Dezvoltatorii mobili Lauren Darcey și Shane Conder au coautorizat mai multe cărți despre dezvoltarea Android: o carte de programare în profunzime intitulată Dezvoltarea aplicațiilor fără fir Android și Sams Învățați-vă dezvoltarea de aplicații Android în 24 de ore. Când nu scriu, își petrec timpul dezvoltând software-ul mobil la compania lor și oferind servicii de consultanță. Acestea pot fi obținute prin e-mail la androidwirelessdev@[email protected], prin intermediul blogului lor la androidbook.blogspot.com, și pe Twitter @ androidwireless.