Meet Android

Android: Meet - ListView

Meet Android

Composite abban a mappában.

ListView nehezebb használni képest TextView és más egyszerű elemekkel. Munka a lista két részből áll. Először is, ehhez hozzátesszük, hogy a forma ő listanézeti, majd töltse ki a lista elemeit.

Tekintsük az elején egy nagyon egyszerű példát. Helyezze a widget formájában ListView. Látni fogja, hogy a lista tartalmazhat több terméket és pont Sub pont.

Meet Android

Azonban, ha megnézi az XML-kódot, akkor nem fogja látni ott semmit.

Mi megy a osztálytermi tevékenység és az írás a onCreate () módszer, a következő kódot:

Ez minden. Lássuk a kódot.

Adapter - megtöltésére tartalmak listája

ListView elem töltéséhez szükséges a tartalmat. A tartalom forrása lehet a különböző forrásokból: tömbök, adatbázis. Társítani az adatokat a listán, egy úgynevezett adapter.

Az adapter általában segítségével létrehozott tervezési új ArrayAdapter (Context összefüggésben, int textViewResourceId, String [] tárgyak).

  • összefüggésben - az összefüggésben a jelenlegi
  • textViewResourceId - erőforrás-azonosító jelöléseket minden sorban. Használhatja a rendszer felépítését ID android.R.layout.simple_list_item_1 vagy létrehozhat saját elrendezés
  • tárgyak - esetén vonalak

setAdapter módszer (ListAdapter) köti össze az előkészített lista az adapterrel.

Azt viszont, hogy a java-kódot. Először kap egy példányt a ListView a módszer onCreate (). Ezután meghatározzuk egy sor String. És végül, használja az adatokat adapter összehasonlítani az adatokat a sablont. A választás az adapter típusától függ a felhasznált adatok. A mi esetünkben használt ArrayAdapter osztályban.

visszavonulás

Ha a vonal a forrás, akkor a kód lenne:

És ez még jobb lesz, ha használja a speciálisan erre az esetre az a típusú erőforrás . A res / érték / strings.xml fájlt, adjuk hozzá a következő:

Fuss a projekt az emulátor, akkor láthatjuk, egy működő példa egy görgethető listában. Ugyanakkor a lista még nem hozott létre reagál megnyomásával. De amikor megnyomja, a kiválasztott elem kijelölve egy színes téglalapban (a verzió az Android 2.3-t narancs, és Android 4.0 - kék).

Meet Android

PmWiki.CustomMarkup

A példában a kész rendszer elrendezését android.R.layout.simple_list_item_1. amely a szín, háttér, magasság pontok és egyéb paramétereket. De nincs akadálya, hogy hozzon létre egy egyéni elrendezést az alkalmazás.

Látjuk, hogy a jelölő használt TextView egy sor attribútumokat.

Hozzunk létre egy sablont egyéni listaelemet. Ehhez a mappában res / layout / hozzon létre egy új fájlt list_item.xml:

Beállítható az összes attribútum a TextView, kivéve tulajdonság szöveg. a szöveg automatikusan felkerül a ListView ellenőrzés programból. Ja, és majd csak megváltoztatni a rendszer elrendezését a kódot:

Dinamikusan feltölteni a listát

Tekintsük a példát dinamikusan feltölteni egy listát, ha a lista kezdetben üres, és a felhasználó maga egészíti ki az új elemeket. Helyezzük a képernyőn megjelenő szöveg terület, ahol a felhasználó belép a híres macska neveket. Amikor a felhasználó rákattint az Enter billentyűt, majd írja be a nevét a macska lesz a lista.

Meet Android

Volt egy keretet a chat, ha a felhasználó beírja a szöveget, és ez lesz a lista. Ezután meg kell, hogy a szöveg egy másik felhasználó és hozzá a listához. By the way, a chat szó francia jelentése "cat". De ez egy másik történet.

Hallgatva a ListView események

Meg kell válaszolni bizonyos események által generált ListView elem, különösen, mi érdekli olyan esemény, amely akkor jelentkezik, amikor a felhasználó rákattint az egyik lista terméket.

Ez a módszer segít setOnItemClickListener ListView elem és eljárás OnItemClick (AdapterView.OnItemClickListener osztály).

Most, ha rákattint minden elemet a listában akkor kap egy felugró üzenet szövegét tartalmazó a kiválasztott elem.

Természetesen tudjuk, nem csak az üzeneteket, hanem, hogy indítson új tevékenységek, stb

A módszer onItemClick () átment az összes szükséges információt meg kell határoznia a kattintott elemet a listában. A fenti példában egy egyszerű módja -, hogy a kiválasztott elem a TextView tárgy, mivel ismert, hogy minden elem elem TextView (instanceof használhatják az üzemeltető további vizsgálata). Mi kivonat szövege a kiválasztott elem, és hasonlítsa össze a húr.

Azt is ellenőrizze, hogy az id attribútum határozza meg a gombbal tétel a listán.

ListView nem reagál a gomb megnyomásával

Bizonyos esetekben kattintva menüpontok nem működnek. Íme néhány lehetséges okot.

A lista elem tartalmaz egy kapcsolót, amely szintén saját hallgató prések. Próbálja meg eltávolítani a hangsúly tőle:

Próbáld mozgatni OnItemClickListener telepítése előtt adapter. Néha segít :-)

lista elem tartalmazza ImageButton. Állítsa a fókuszt hamis:

lista elem tartalmazza TextView. Ha az attribútum android: inputType = "textMultiLine". majd cserélje ki az android: minLines / android: maxLines.

Személyre szabni a ListView

A ListView több hasznos tulajdonságok, amelyek lehet, hogy a lista még vonzóbbá. Például, van egy elválasztó tulajdonság. amely felelős a megjelenése az elválasztó, valamint a dividerHeight attribútum. felelős a magassága a szeparátor. Mi lehet állítani bármilyen szín vagy kép az elválasztó. Például hozzon létre egy színt elválasztó erőforrás a vörös szín, valamint a méret a forrás magassága:

Ezután adja meg a létrehozott erőforrás attribútum elválasztó. és állítsa be a magasságot attribútum dividerHeight a ListView elem:

Meet Android

Ha nem elégedett a szabványos elválasztó, amely képes felhívni néhány kacskaringós vonalat, mentse PNG-fájlt, és használja azt az erőforrás-húzható. Csináld magad.

Akkor működik a adatattribútumok a szoftver:

Megjegyezzük, hogy a határoló nem jelenik meg alapértelmezésben, mielőtt az első és az utolsó elemet a listából. Ha meg akarja változtatni ezeket a beállításokat használja a tulajdonságok lábléc osztók engedélyezett (footerDividersEnabled attribútum) és Fejes elválasztó engedélyezett (headerDividersEnabled attribútum):

felhasználó választó

Azt már láttuk, hogy az alapértelmezett kiválasztott elemet a listában látható színes csíkok. Ez a szelektor is konfigurálható keresztül listSelector attribútumot. Készítsen néhány textúrát a választó és megkötjük az életben. Itt egy példa a texturált sárga halo a választó vett az Android könyv 24 órával. Programozási alkalmazások az operációs rendszer a Google.

Meet Android

Ha kell, azonnal jelölje ki a kívánt elemet a listában, amikor elkezdi a programot, használja egy csomó két módszer:

feleletválasztós

ListView lehetővé teszi, hogy dönt, hogy nem csak egy elem, hanem több. Ebben az esetben telepíteni kell Choice Mode ingatlan multiplyChoice. amely megfelel az attribútum android: choiceMode = "multipleChoice".

Továbbá, többszörös választás lehet állítani algoritmikusan segítségével setChoiceMode módszerrel (ListView.CHOICE_MODE_MULTIPLE).

Most, ha létrehoz egy tömböt, mint például egy listát a macska reggeli ételek, megkapjuk a következő eredményt.

Meet Android

Továbbra is csak a programozott jelölt elemek listáját, a felhasználó által. Itt van a termékek listáját, hogy szeretnék ajánlani egy macska. Remélem, szereti az én választásom. A kiválasztott elem kerül egy TextView:

Meet Android

Ha szükséged van egy külön lista a kiválasztott és nem kiválasztott elem a listában, akkor írj a következő:

Kockás változó tartalmazni fogja a kiválasztott tételeket, valamint a változó ellenőrizetlen - egy lista a nem kiválasztott terméket.

Meg kell jegyezni, hogy a példákban használt régi módszer getCheckedItemPositions (). elérhető az Android 1. Android 2.2 van egy új getCheckedItemIds () metódust. Vegye figyelembe, hogy egy új módszer, hogy egy sor csak a kiválasztott elemekre, de a legtöbb esetben ez is elég. De ez a módszer igényli a saját problémáit, és ebben én például, aki nem szerzett.

Gombra a listában

Ha azt szeretnénk, hogy helyezze az alábbi gombra a listán, amely nem függ a tételek számát a ListView, majd a tömeg (layout_weight).

Egyenletes görgetés az a lista tetején, vagy bármilyen helyzetben

A listában van egy speciális smoothScrollToPosition () metódust. Lehetővé teszi a sima lépjünk a kívánt helyre. Elég, ha jelzi a módszer cikkszám görgetni:

testreszabható görgetés

Van egy ListView tulajdonítja, hogy testre a megjelenését a scroll

ListActivity

Ha szüksége van egy formája, amely csak a listában, akkor könnyebb kihasználni a rendszer helyett a szokásos osztály ListActivity Activity. Ezt a megközelítést a dokumentációban leírt a ListView. Egy példa a munka cikkében ismertetett ListActivity - hozzon létre egy görgethető listában.

további irodalom

Kapcsolódó cikkek