Hogyan kell menteni az állam a jelölőnégyzetet a listview a activiti keresztül, hanem a hallgató adapter - stack

A megértés az általános működési elve és a kinevezését egy adapter, akkor segíthet megválaszolni ezt.

Következő, hogy miért a jelölőnégyzeteknél megváltoznak, amikor a görgetés.
Amikor létrehoz egy aktuális tételek adapter nem mindig létrehozza a elrendezés a semmiből, hogy gyorsítsa fel a munkát, aki használja a korábban létrehozott elrendezést elemek, amelyek jelenleg nem látható a képernyőn, mert azonos az összes elemek listája. Ebben az esetben, ha az erő nem tölti ki az aktuális adatokat az eljárás tételek getView () adapter, tart, mi maradt utoljára abban a formában, amelyben ez volt az utolsó (újra) használata. Ebből, és van értelme, amikor egy állami hirdetések véletlenszerűen „ugrik”. Mindebből különösen, hogy nem „lock” négyzeteket nem fogja megoldani a problémát, mert csak a képernyőn lát olyan tételek, amelyek magasabb (alacsonyabb) a listából, és most eltűnt a képernyő szélén.

A megoldás egyszerű. A formáció az egyes tételek kényszeríteni telepíteni államok pontosan megfelel a pozíció, amely jelenleg megjelenik a képernyőn. Ehhez ezek az államok kell valahol tárolni külön-külön. Mert akkor dolgozik egy középkategóriás modell, és kiosztott egy speciális dobozban tárolja az állam a jelölőnégyzetet, majd fel kell használni. Ha az állam a négyzetet (kattints rá, vagy az összes tétel) szeretne felvenni egy új állam a modellben. Ehhez meg kell irányítani a sajtó révén a hallgató kattintás és minden manipulációt végzik azt.

A kód csak a megtakarítás változások Államokban, amikor rákattint. Hogy oldja meg a problémát, mert a hallgató külön négyzetet, és akkor nem kell egy állapotváltozás történik kattintva az összes terméket, az illesztő eljárás végrehajtására szetter. amely meg fogja változtatni a modellt az adapter, miközben a megváltozott állapot. Calling ezt a módszert kell majd a activiti, ha hallgat a kattintások feldolgozása OnItemClickListener () listán.

Mivel szükség van, hogy a visszatérő módosult az adapter (A módszer getter), amikor az összes szükséges jeleket készülnek kijáratánál a activiti combo adapter és a modell illetve továbbítani az el fog veszni, és a jel lesz hiábavaló.

Egy példaértékű megvalósítása is így néz ki:

Csak néhány megjegyzést:

Ha dolgozni az adatbázisban, akkor a legjobb megoldás az, hogy az osztályok vannak kialakítva, hogy működjön együtt az adatbázisban, például kurzor és örökölt SimpleCursorAdapter (). hogy visszaadja a rekord ID az adatbázisból, vagy használhatja a ORM.
Különösen most van olyan helyzetben, hogy írsz, hogy az adatbázisban a helyzetét. ID az adatbázisban, de nem azonos a pozíció értékét az adapter, meg hogy \ adatok törlése az adatbázisból helyzetben ID más lesz, mert az azonosító mindig rendelve a következő számlára. Ez azt jelenti, eltávolítja a harmadik bejegyzés az adatbázisban (a, mondjuk, öt) kap a következő sorrendben azonosító az adatbázisban: 0,1,3,4,5, míg a helyzet a lista: 0,1,2,3, 4. Lesz kap egy hiba, és rögzíti az adatokat nem létezik.

Azt is javasolta, hogy a wrapper osztály működik az adatbázis, amelyet végre kell hajtani a felvételi eljárások, az olvasás és stb szifilisz műveleteket, nem küld „nyers” kérések, ahogy most csinálunk.