2016-07-05 8 views
5

私はArrayList<>JsonArrayの両方をアダプタのデータセットとして使用しました。私が見つけた大きな違いの1つは、Adapterのローカルデータのデータセットの変更がJsonArrayの呼び出し元クラスに反映されていなかったことです。RecyclerViewアダプタへのデータセットとしてJsonArrayとArrayListを使用

私はどちらが良いかを知りたいと思っていましたが、私の見解は正しいです。

また、私のデータセットがウェブサービス(私がJsonフォームデータを与える)からデータを抽出することが必要な場合は、ArrayList <>に変更します。

+0

"あなたは、アダプタのローカルデータのデータセットの変更がJsonArrayの呼び出し元クラスに反映されていませんでした"とはどういう意味ですか? –

+0

はい。私はMainActivityにデータセットを持っています。関数を使用してアダプタクラスにそのデータを渡してから、notifyDataSetChanged()を呼び出します。私が作成したデータセットの変更は、JsonArrayを使用する場合は同期されませんが、ArrayList <>を使用する場合は同期されます。 – Harshit

+0

@HarshitあなたのJsonArrayにはより構造化されたデータが含まれていますか? – JJ86

答えて

2

私が知る限り、JsonArrayは、ArrayListよりはるかに遅くありません。だから私はあなたがJsonArrayを使用して大丈夫でなければならないと信じています。 jsonsを使用するときに問題を解決するためのコードが必要です。

1

JsonArrayは内部的にArrayListを使用しているため、内部呼び出しがJavaで高速であるため、遅延が少なくなります。

しかし、JsonArrayをArrayListに変換し、JsonArrayに複雑なデータが含まれていると、アプリケーションの開発者の容易さとパフォーマンスに合わせてArrayListへのアクセスが高速になります。

1

あなたは間違いなくあなたのデータセットとしてそれを使用して、まだあなたはそれのために利用可能なすべての方法を得るために配列リストにJsonArrayを変換したい場合は、その後

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

この答えを読むことができるので、まあjsonArrayが高速なソリューションです

あなたのケースでは、JsonArrayと一緒に行くのは良いですが、良い方法と強く推薦する方法はGSONを使用しています.Jsonと一緒に作業するときはいつでも、私は黄金のアプローチをしています。

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

1

JSONArray内部ArrayListを使用しています。 ArrayListのラッパーです。だから私は違いがないと言いたい。 JSONObjectはHashMapを使用しているので、実際の欠点はありません。

1

はい両方とも使用できます。どのようなものが正しいのかというと、JsonArrayを使用すると、MVCが壊れるように感じられます。だから明日、JsonをXML、yamlなどに変更した場合は、モデルを変更する必要があります。理想的には、あなたのモデルは、ビューを表示するのに必要なものの最小限を知っていて、ビューだけに結合されている必要があります。 3つのラベルを表示する場合は、モデルには3つの文字列しか含める必要がありません。だから、私はそれをリストにすることをお勧めします。

関連する問題