2016-07-05 28 views
5

Użyłem obu ArrayList<> i JsonArray jako zestawów danych w adapterze. Jedną z głównych różnic, które odkryłem, było to, że zmiany zestawu danych dla danych lokalnych w adapterze nie zostały odzwierciedlone w klasie wywołującej JsonArray.Używanie JsonArray vs ArrayList jako zestawu danych do adaptera RecyclerView

Chciałem wiedzieć, który z nich jest lepszy i czy moja obserwacja jest poprawna.

Również jeśli mój zestaw danych obejmuje wyodrębnianie danych z usługi sieciowej (która daje mi dane formularzy Json), zmienię je na ArrayList <> lepiej.

+0

Proszę wyjaśnić, co rozumiesz przez "zmiany zestawu danych dla danych lokalnych w adapterze nie zostały odzwierciedlone w klasie wywołującej dla JsonArray"? –

+0

Tak. Mam zestaw danych w MainActivity. Przekazuję te dane do klasy adaptera za pomocą funkcji, a następnie wywołuję metodę notifyDataSetChanged(). Zmiany w tym zestawie danych, które wprowadzam, nie są synchronizowane podczas korzystania z JsonArray, ale są zsynchronizowane podczas korzystania z ArrayList <>. – Harshit

+0

@Harshit Czy twój JsonArray zawiera bardziej uporządkowane dane? – JJ86

Odpowiedz

2

O ile mi wiadomo, JsonArray nie jest dużo wolniejsza niż ArrayList. Tak wierzę, że powinieneś być w porządku używając JsonArray. Musimy zobaczyć kod, który pomoże rozwiązać problem przy korzystaniu z jsons.

1

JsonArray wewnętrznie używa ArrayList, więc opóźnienie jest mniejsze, ponieważ wywołania wewnętrzne są szybkie w Javie.

Ale jeśli konwertujesz JsonArray na ArrayList, a JsonArray zawiera bardziej złożone dane, dostęp do ArrayList jest szybki jak na łatwość i wydajność aplikacji.

1

Dobrze jsonArray to szybkie rozwiązanie, więc na pewno można używać go jako zestawów danych i nadal, jeśli chcesz przekonwertować JsonArray do listy tablicy zdobywania wszystkie metody dostępne dla ona następnie odczytać tę odpowiedź

https://stackoverflow.com/a/17037364/5476209

W twoim przypadku dobrze jest pójść z JsonArray, ale dobrym sposobem i zdecydowanie polecam sposób użycia GSON Powiedziałbym złote podejście, gdy pracujesz z Jsonem Cholera wolałbym to, zobacz tę odpowiedź.

Google Gson - deserialize list<class> object? (generic type)

1

JSONArray wewnętrznie używa ArrayList. To tylko opakowanie ponad ArrayList. Więc powiedziałbym, że nie ma różnicy. JSONObject używa HashMap, więc znowu nie ma żadnych wad.

1

Tak, można użyć obydwu. Jeśli chodzi o to, co jest bardziej poprawne, użycie JsonArray ma wrażenie, że łamie MVC. Więc jeśli jutro zmienisz z Json na XML, yaml itp., Będziesz musiał zmienić swój model. W idealnej sytuacji Twój model powinien znać minimum potrzebne do wyświetlenia poglądów i być połączony wyłącznie z widokami. Jeśli chcesz wyświetlić trzy etykiety, twój model powinien zawierać tylko trzy ciągi. Tak więc, poleciłbym uczynić go Listą.