2013-07-16 10 views
7

Tworzę aplikację, która wyświetla dane w widoku listy. Dane są podzielone na kategorie, powiedz powiedzmy dwa typy (popularne, ulubione). Mam jedno działanie i dwa fragmenty. Fragmenty wyświetlają listę przedmiotów na podstawie ich kategorii. Użyłem ListView do tego. Mam wtedy dwa fragment_layouts, które są dokładnie takie same w projekcie, ale mają inne id widoku, tj. TvId1, tvId2 dla TextViews. Kody w Fragmentach różnią się jedynie odniesieniem do ich odpowiedniego układu i widoków w układzie. Otrzymuję dane z adresu URL w formacie JSON. Ale każda kategoria ma inny zestaw adresów URL, który tworzy taką samą strukturę, po prostu różne dane. Następnie analizuję odpowiedni adres URL każdego fragmentu i odpowiednio zapełniam ListView. Wszystko działa tak daleko.Android - tworzysz fragment kilka razy?

Co chcę wiedzieć, czy istnieje sposób, że mogę po prostu użyć jednego fragmentu i użyć go dwa razy z różnymi zestawami danych w każdym z nich? W ten sposób nie muszę tworzyć kolejnego fragmentu, jeśli pojawi się nowa kategoria.

Doceń każdą pomoc.

Odpowiedz

10

Oczywiście, że możesz to zrobić. W rzeczywistości powinieneś to zrobić w ten sposób.

Podczas tworzenia fragmentu nie należy używać new Fragment(); Utwórz statyczną funkcję newInstance, która pobiera dane jako argument.

public static MyFragment newInstance(int type) { 
    MyFragment fragment = new MyFragment(); 
    Bundle args = new Bundle(); 
    args.putInt("type", type); 
    fragment.setArguments(args); 
    return fragment; 
} 

a następnie można uzyskać typ na onCreate() Metoda z użyciem poniżej:

getArguments().getInt("type"); 

a następnie dostać się typ, można połączyć się usługa odpowiednio, a następnie można ustawić Views odpowiednio.

+0

Wielkie dzięki. Pracował jak urok. Uratował mi wiele kłopotów. Chciałbym zagłosować, ale nie mam jeszcze wystarczającej reputacji. – user2469412

+0

Bez problemu. :) Szczęśliwe kodowanie. – tasomaniac

Powiązane problemy