2016-05-26 1 views
0

次のMVPパターンを実装します。
私のビューはリストを表示するリストフラグメントです。
私のモデルは、ネットワーク通話に由来するリストに表示されるデータです。
私のコントローラは、ビューとモデルの間でデータを渡すコントローラです。
私の流れは:
1)私はネットワークリクエストをして、私が〜20項目を示す応答を返します。各アイテムにはアイテムのURLのリストがあります(〜70)。
)アイテムをクリックすると、私はループに入り、これらの各URL(実質的に)〜70回のボレーリクエストを順番に提出するようにリクエストします。私はそれぞれの応答を得ると私は私のアダプタを更新します。ネットワークからリストビューにデータを渡すためのMVPを実装する

質問:
私はMVPを使用し、何らかの種類のコールバックメカニズムを使用してビューを更新するにはどうすれば変換できますか?この回答のそれぞれについてコールバックするのは良い考えではないと思います。onNotifyDataSetChanged() 70回
これのベストプラクティスは何ですか?

蛇腹

よりコンテキストI 2つのリスト断片から構成されているアプリケーションおよびレイアウトビューの1つの簡単な断片を有します。
最初のリストフラグメントは〜20個のリストを示しています。
各アイテムをクリックすると、2つ目のリストフラグメントの別のリストに表示される〜70個のアイテム(最大)がサーバーから取得されます。
ユーザーがリストアイテムをクリックすると、そのアイテムに固有のデータがネットワークからフェッチされ、最後のフラグメントに表示されます。
したがって、基本的に最初のリストはデータに「分割」されます。しかし、2番目のリストの項目は〜70以下です。

デザイン:
私はネットワーク通話のためにボレーキューを使用しており、機能的にはうまく動作し、必要なデータを表示します。
私は、ボレーのリクエストにリスナーを追加しました。リスナーから、私は自分のアダプターをアップデートします。
メリットとしては、レスポンスが来ると、アダプタに通知することでそれらを表示するので、データを見る前に70回のリクエストが完了するのを待つ必要はありません。

問題:
ため私は2番目に移動すると最初のフラグメントのクリック時に、私はこれらのバックエンドの呼び出しを開始し、私はこれらのコールがキューイングされている第三に行くと(私はそれを見ることができるという事実にログ)、私が3番目の断片に行くと、残りのアイテムの呼び出しは発砲し続け、最初に戻ると同じです。
アダプター内のVolleyからのこれらの要求に対する応答が得られ、実際のフラグメントがもはや「関連性がない」可能性があるため、どのようにこれをより良く設計できますか?
(好ましくは)

+0

この投稿を改善するにはどうすればよいですか?私の記事があまり役に立たないのか、私が描いていることがよくある問題ではないのか、誰かに教えてもらえますか? – Jim

答えて

0

あなたが持っている同じデザインを使用することができ、私はモデルビューパターンのいくつかの種類を推測するが、私の場合には、私はすべてのネットワークが私のモデルからデータを取得するために終了する呼び出しを待つ必要はありませんあなたは/あなたが行うことができますフラグメント削除隠すときに

request.setTag("fragX"); 

getRequestQueue().cancelAll("fragX"); 

をこれが「fragX」応答を受信できなくなります今、ちょうどあなたが一つの断片のために作るの要求にタグを追加かつての待ち行列に入れられる。

また、受信した応答をファイリングし、さらに進んでRxJavaを使用することで、ストリームを扱うことができ、フィルタリングとは別に、レスポンスのさまざまな便利な操作を実行できます。

私はjusを使用しましたが、これはVolleyのフォークとして開始されましたが、現在はRxJavaを含む多くのオプションをサポートしています。あなたはサンプルとボレーのサンプルもそこに置くことができます。

+0

更新されたOPをご覧ください – Jim

関連する問題