Android listview

Meet - ListView

Android listview

Található, a konténerek részben.

ListView alkatrész nehezebb használni képest TextView és más egyszerű elemekkel. Munka a lista két részből áll. Először összeadjuk a forma maga ListView. majd töltse ki a lista elemeit.

Tekintsük az elején egy nagyon egyszerű példát. Vegye fel a forma és a hozzá ListView alkatrész azonosító. Látni fogja, hogy a lista tartalmazhat több terméket és pont Sub pont.

Android listview

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 - kitöltő adatok listája

ListView komponenst adatok töltéséhez szükséges. A tartalom forrása lehet tömbök, adatbázis. Társítani az adatokat a listán, egy úgynevezett adapter.

Adapter szabvány listáját tipikusan felhasználásával készített 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ő:

A projekt futtatásához, akkor megjelenik 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 narancssárga, és az Android 4.0 - kék, aztán egy szürke színű, stb.)

Android listview

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.

Ha beszélünk a rendszer particionálás, több lehetősége van. Tájékoztatta őket.

android.R.layout.simple_list_item_1

Áll egy TextView (cm. Fent)

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

Bizonyos esetekben kívánatos attribútumot beállítani android: background = „? Android: attr / activatedBackgroundIndicator” szülő elem a lista elemei reagálni nyomja a színváltozás. Beállíthatjuk, és a saját viselkedését.

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:

Amikor egyéni lista elemet, amely TextView használhat speciális stílust minimális mérete a szövegben.

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.

Android listview

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. 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 interface).

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 használt egyszerű módon -, hogy bemutassa a kiválasztott elem TextView objektumot. mivel ismeretes, hogy ebben az esetben, az összes 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.

Szoftver kattintás a tétel a listán

Hirtelen azt szeretnénk, hogy programozottan kattintson az elemre a listában. Megkérdeztük a kódot kell elvégezni, amikor az előző példában. Most adjuk hozzá a gombot, és írjuk be a kódot az kattintással.

Kód nehézkes, de működőképes.

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.

lista elem tartalmazza jelölőnégyzetet. amelynek szintén van 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 az adaptert. 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:

Android listview

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:

Ha azt szeretnénk, hogy távolítsa el a tömítéseket, akkor egy átlátszó színű.

Megjegyezzük, hogy a sorrendben a két módszer fontos hívást, ha a hívás felépítés magasság beállítása előtt a színt elválasztó, az eljárás törlését szín és az eredmény ugyanaz lesz, mint az átlátszó szín.

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ó a tulajdonság android: listSelector. 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ó.

Android listview

Meg kell készíteni az első res / húzható / selector.xml file:

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.

Android listview

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:

Android listview

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.

háttérvilágítás kattintások

Ezen a ponton, az alábbi módszerrel kiemelve elem a listában a gomb megnyomásával. Ez figyelembe veszi változata Android (előtt és után az API 21).

res / érték / colors.xml

res / húzható / item_selector.xml

res / húzható-V21 / item_selector.xml

A különbség az, hogy a változat 21 használata ajánlott szürke feszültségingadozás.

Forrásokból kell használni a háttér elem a lista (list_item.xml): android: background = "@ húzható / item_selector".

Annak ellenőrzésére, singleChoice állítsa az üzemmód aktiválásához a kiválasztott elem.

Hozzon létre egy stílust a tablettát.

res / values-sw600dp / styles.xml

A hagyományos styles.xml hagyja el a dugót.

Most alkalmazni a stílust a listából, és a kívánt viselkedést az aktiválás csak akkor alkalmazható a lemezeken.

Ha forgatni a kiválasztott elemet a listában kívül lehet a képernyőn. A smoothScrollToPosition () metódus, akkor automatikusan lapozzunk a kívánt helyre. A kód jelenik meg a fejlett fogadások.

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 szabni a görgetősáv

Hasonlóképpen, ez vonatkozik a görgetősávokat ScrollView. EditText stb

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.

Állítsa be a színt, ha eléri a szélét a scroll

Amikor görgetés végére ér (felső vagy alsó), a kimeneti színhatást. Az API 21 a lehetőséget, hogy kezelni ezt a hatást a colorEdgeEffect attribútum:

Ezután alkalmazza a témát.

A régebbi ez a beállítás nem készült eszközök.

további irodalom

Kapcsolódó cikkek