使用JsonArray vs ArrayList作为数据集到RecyclerView适配器

问题描述:

我已经使用ArrayList<>JsonArray作为适配器中的数据集。我发现的一个主要区别是,适配器中本地数据的数据集更改没有反映在JsonArray的调用类中。使用JsonArray vs ArrayList作为数据集到RecyclerView适配器

我想知道使用哪一个更好,我的观察是否正确。

此外,如果我的数据集涉及从Web服务(这给了我JSON形式的数据)提取数据将我更改为ArrayList <>更好。

+0

请您详细说明一下,“适配器中的本地数据的数据集更改没有反映回JsonArray的调用类”,您是什么意思? –

+0

是的。我在MainActivity中有一个数据集。我使用函数将该数据传递给Adapter类,然后调用notifyDataSetChanged()。使用JsonArray时,我制作的数据集中的更改不同步,但在使用ArrayList 时同步。 – Harshit

+0

@Harshit你的JsonArray包含更多结构化数据吗? – JJ86

JsonArray由ArrayList实现。 http://grepcode.com/file/repo1.maven.org/maven2/org.json/json/20080701/org/json/JSONArray.java

所以它的应用程序性能非常类似的变种。使用你喜欢的东西=)

+0

仍然从索引中删除项目不适用于前棒棒糖版本。 – Harshit

据我所知JsonArray并不比ArrayList慢很多。所以我相信你应该可以使用JsonArray。我们需要看到一些代码来帮助解决使用jsons时的问题。

JsonArray内部使用ArrayList,所以延迟较少,因为内部调用在Java中很快。

但是,如果您将JsonArray转换为ArrayList并且JsonArray包含更复杂的数据,则根据App的开发人员易用性和性能,访问ArrayList的速度会很快。

好jsonArray是一个快速的解决方案,因此,如果你想JsonArray转换成数组列表,你绝对可以使用它作为您的数据集,并仍然是获得所有可用的方法为它然后读取这个答案

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

在你的情况下,它可以与JsonArray一起使用,但是一个好方法,并且强烈推荐使用GSON。当你和Json一起工作时,我会说一个黄金方法,我会更喜欢它,看到这个答案。

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

JSONArray内部使用ArrayList。这只是包装ArrayList。所以我会说没有区别。 JSONObject使用HashMap,所以再没有真正的缺点。

是的,他们都可以使用。至于哪一个更正确,使用JsonArray感觉就像打破了MVC。所以如果明天你从使用Json改为XML,yaml等,你将不得不改变你的模型。理想情况下,您的模型应该知道显示视图所需的最低限度,并且除了视图之外什么都不需要。如果你想显示三个标签,那么你的模型应该只包含三个字符串。所以,我建议你把它做成一个List。