Hirdetés

Keresés

Új hozzászólás Aktív témák

  • thon73

    tag

    válasz WonderCSabo #1442 üzenetére

    Kedves WonderCSabo! (ill. kedves mindenki!)

    Még egy utolsót szeretnék kérdezni, mielőtt végképp feladom a küzdelemet... :W Az előző megoldások tökéletesek, ki is próbáltam őket, - csak éppen (List)Fragment-nél nem működnek. Ott ugyanis úgy kell elkészítenem a kódot, hogy ÜRES Konstruktorral újra elkészíthető legyen a Fragment.
    Problémám a következő: Teljesen egyforma ListView-k (és ListFragmentek) jelenítik meg egy adatbázis különböző tábláit. Az eltérés néhány (6-7) paraméterben van: LoaderId, projection, from, to, content_uri stb.; maga a kód mindig azonos.

    Mi lenne a legjobb módszer arra, hogy egyetlen ListFragment osztály tartalmazza a kódot, és minden táblához ebből - más paraméterezéssel - egy külön ListFragmentet készítsen? Tényleges paraméterezés nem használható, az üres konstruktor miatt. Két ötletet kínlódtam ki: vagy abstract metódusokkal kényszerítem ki a "paraméterek" átadását a leszármazottakban, vagy az argument Bundle-be teszem bele egy-egy konkrét ListView-ban a paramétereket.

    Nem létezik, hogy ne lenne erre valami pofonegyszerű megoldás, csak sehogy nem találom. :(((
    Előre is köszönet minden hasznos ötletért!

  • thon73

    tag

    válasz WonderCSabo #1442 üzenetére

    Akkor csak a tanulság kedvéért. Vigyázat mindenki csukja be a szemét, hibás kód következik!

    public ABSTRACT class A extends ListFragment {

    public STATIC ListFragment newInstance() {
    return new ??getClass??();
    }
    }

    public class B extends A {
    }

    public class C extends A {
    }

    Az ötlet az volt, hogy B.newInstance() létrehoz egy B példányt, melyet ListFragment-ként visszaad, míg C.newInstance() létrehoz egy C példányt, melyet szintén ListFragmentként ad vissza.
    Ha a tényleges példány csak az abstract, mint minta alapján jönne létre, akkor a kérdőjeles rész mindig a példány osztálya lenne. De persze ez nem működik, legalábbis a static metódusban nincs ilyen hivatkozás. Nem staticban egyébként a this így működik, mentségemre legyen mondva.

    Utólag látom, hogy az egész hibás ötlet volt. (Tegyük még hozzá: newInstance minden esetben egy hosszabb Bundle-t hoz létre, ezért merült fel az ötlet.)

    (((Azt már tényleg csak ezer zárójelben teszem hozzá, hogy a leszármazott osztály nevét meg lehet szerezni, és lehet ilyet körülményesen mégis gyártani, de a javasolt megoldás sokkal átláthatóbb, és kényelmesebb.)))

    Remélem senkit nem bosszantottam azzal, hogy csupán a tanulság kedvéért helytelen kódot szemeteltem a fórumba. :N Én nagyon sokat tanultam a javaslataidból, hála és köszönet! :R

Új hozzászólás Aktív témák