2016-07-05 24 views
5

Ho utilizzato sia ArrayList<> sia JsonArray come set di dati nell'adattatore. Una delle principali differenze che ho riscontrato è che le modifiche al set di dati per i dati locali in Adapter non sono state riportate nella classe chiamante per JsonArray.Utilizzo di JsonArray e ArrayList come set di dati su Adattatore RecyclerView

Volevo sapere quale è il migliore e la mia osservazione è corretta.

Anche se il mio set di dati comporta l'estrazione di dati da un webservice (che mi fornisce dati del modulo Json) sarà meglio modificarlo in ArrayList <>.

+0

Potrebbe per favore elaborare, cosa intendi per "modifiche del set di dati per i dati locali in Adapter non è stata riflessa nella classe chiamante per JsonArray"? –

+0

Sì. Ho un set di dati in MainActivity. Sto passando quei dati alla classe Adapter usando una funzione e poi chiamando notifyDataSetChanged(). Le modifiche apportate al set di dati che creo non sono sincronizzate quando si utilizza JsonArray, ma sono sincronizzate quando si utilizza ArrayList <>. – Harshit

+0

@Harshit il tuo JsonArray contiene dati più strutturati? – JJ86

risposta

2

Per quanto ne so, lo JsonArray non è molto più lento di ArrayList. Quindi credo che dovresti stare bene usando JsonArray. Avremmo bisogno di vedere del codice per risolvere il problema quando usiamo i jsons.

1

JsonArray utilizza internamente ArrayList, quindi il ritardo è inferiore perché le chiamate interne sono veloci in Java.

Ma se si converte JsonArray in ArrayList e JsonArray è contenuto in dati più complessi, l'accesso a ArrayList è veloce come per la semplicità e le prestazioni degli sviluppatori di App.

1

Beh jsonArray è una soluzione veloce e quindi si può sicuramente utilizzarlo come set di dati ed ancora, se si desidera convertire JsonArray nella lista di array per ottenere tutti i metodi disponibili per poi leggere questa risposta

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

Nel tuo caso va bene con JsonArray ma è un buon modo e ti consiglio vivamente di usare GSON Direi un approccio d'oro ogni volta che lavori con Json. Preferirei dannatamente, vedere questa risposta.

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

1

JSONArray utilizza internamente ArrayList. È solo wrapper su ArrayList. Quindi direi che non c'è differenza. JSONObject utilizza HashMap quindi ancora nessun vero inconveniente.

1

Sì, entrambi possono essere utilizzati. Per quanto è più corretto, l'uso di un JsonArray sembra spezzare MVC. Quindi se domani hai cambiato da Json a XML, yaml, ecc. Dovresti cambiare il tuo modello. Idealmente, il tuo modello dovrebbe conoscere il minimo indispensabile di ciò che è necessario per visualizzare le viste ed essere abbinato a nient'altro che le viste. Se si desidera visualizzare tre etichette, il modello dovrebbe contenere solo tre stringhe. Quindi, ti consiglierei di farne una lista.

Problemi correlati