2017-03-16 21 views
0

リスト(RecyclerView)の残りのWebサービス(春)から取得したデータを表示しようとします。データは、何千もの行から構成できます。これらのデータはどのように使用するのですか?Webサーバーからアンドロイドで取得したデータを使用するにはどうすればいいですか

  • すべてのデータ(または100行)をフェッチしてローカルに保存し、それらをローカルのリストから表示する必要があります。これらを使用する場合、ローカルデータをどのように更新する必要がありますか?
  • 20行を取得して表示する必要があります。ユーザーが最後のアイテムをスクロールして別の20行をフェッチすると表示されますか?
  • 別の方法を使用する必要がありますか? すべてのデータを配列として格納すると、outofmemoryexceptionがスローされます。検索するためのチュートリアルやキーワードがありますか?

これらのデータをどのように使用するのですか?ツイッターリストにはたくさんのアイテムがあるかもしれませんが、クラッシュしたり、オフラインでダウンロードしたアイテムをTwitterで表示することはできません。

+0

私はあなたのrecyclerViewに初期量のデータ(つまり20行)を読み込むことをお勧めします。自動ロードリスナーを実装するか、ユーザーが目に見えるアイテムの下部に達するとデータをさらに取得するか、SwipeRefreshLayoutを使用してより多くのデータ。 –

答えて

1

アプリをスムーズにするにはRecyclerView、Endless Scrollingを使用してください。 一度に20個のアイテムを読み込み、サーバAPI呼び出しでページネーションを適用します。

サーバーからローカルストレージにすべての応答をOKHttp Response Cachingを使用してキャッシュします。

+0

無限のスクロールはよく見え、データを取得してリストに追加するために機能します。しかし、古いアイテムやその使用方法はどうすればよいですか?私が取り出したアイテムをリストに追加すると(私はArrayListを使ってrecyleviewを設定します)、リストはもっと大きくて大きくなります。リストをクリアして新しいアイテムをリストに追加する必要がありますか?また、ユーザーがスクロールして表示されている最初のアイテムに到着したことを知っていなければなりませんか?ローカル(キャッシュまたはどこか)の古いアイテムをリストに追加するには? – uuur

+0

リストのサイズを気にする必要はありません。キャッシュされたデータがより高速に読み込まれ、使用されるリソースが少ないため、キャッシュされたデータから結果を取得すると正常に動作します。 リストから古いデータを消去しない場合、ユーザーのスクロール位置を追跡する必要はありません。 RecyclerViewアダプタはそれ自体を管理します。 –

0

ローカルデータベースを作成し、既にロードされているすべてのデータをDBに保存し、データが変更される可能性がある場合はタイムスタンプのような "フレッシュネス"を追加します。データ項目が膨大な場合は、まずデータの「索引」をロードしてから、後で個々の詳細をロードしてください。

0

間違いなく、すべてのデータを一度に取得しないでください。アンドロイドの動的データのページ設定について読む。リサイクラビューでは静的データの埋め込みページも使用されますが、動的データの場合、つまりAPIからデータを取得しているときは、ユーザーがリストをスクロールして次のデータセットを取得するときにapiにリクエストを送信する必要があります。これを行うには、RecyclerViewのOnS​​crollListenerを拡張し、OnScrolledメソッドをオーバーライドする必要があります。

関連する問題