RxJavaが新しく、フローのカスタマイズに問題があります。ユースケースはこちらです:監視可能なアイテムによって特定の量のアイテムがエミュレートされた後でアクションをトリガーする
私は画像のグリッドや画像の合計金額が表示されますTextView
とフッターを表示するGridLayoutManager
とRecyclerView
を持っています。文脈に入れるために、私はユーザが15枚の画像を持つことができます。TextView
は「15枚の画像」と言いますが、グリッドは4枚しか表示されません(「プレビュー」と理解してください)。さて、私が作成したObservableのonComplete()
に、これらの画像を表示するために、私はadapter.notifyDatasetChanged()
と呼ぶでしょう。しかし、その画像が表示されるのを待つことは無意味です。リストがあれば、200枚の画像が表示されます。リストから4枚の画像が出力されるとすぐにアダプターに通知したいと思います。私の観察できるが、そのように作成されます。
Observable.just(user.getUserId())
.subscribeOn(Schedulers.io())
.map(this::getImageList)
.flatMap(images -> Observable.fromIterable(images)
.map(image -> image))
.observeOn(AndroidSchedulers.mainThread());
はそうした、その後、
images.size == 200
あれば、それは(私はここでは正しいよ願っています)200回通知されますので、私は、
Observer.onNext()
にアダプタを通知することはできません。
Observer.onComplete()
でそれを行うことはできません。アダプタが通知される前に、200の模範的な画像のすべてが放出されるのを待つので、私はそれを行うこともできません。リストから4つのアイテムが放出されたときにそのフローを傍受し、(アダプタに通知する)どのようにして残りを放出し続けることができますか?4つだけで完了せずに、総イメージ量で適切なフッターテキストを表示できますイメージ?
UPDATE - この質問の範囲外の目的のために、私は観察可能な完了後に画像の完全なリストが必要です。私はそれらのうちの4つを表示し、TextView
を検索された画像の総量で更新し、検索された全画像のリストを保存したい。
ご回答ありがとうございます。私は私の質問を変更する必要があります - 私はこの問題の範囲外の、さらなる処理のために画像のリストが必要です。フッターのテキストは、私が完全なリストが必要な理由の例でしたが、非常に弱い例があります。実際には、まだ完全な画像リストが必要です。 – Austie
サイズを取得したり、リストをアダプターに渡したり、200枚の画像を送信する必要があるなど、全体としてアクションを実行する必要がありますか?最初のケースでは、あなたはまだあなたのリストにアクセスすることができますコードのブロックを変更することができます(最初のコメントの下)。 2番目のケースでは、私は自分の答えを – canihazurcode
で更新しますので、このように見えます。私はユーザープロファイルを表示する画面を持っています。 'userId'に基づいて、ユーザーの画像リストを取得します。しかし、ユーザープロファイルのすべてを詰め込むのではなく、そのうちの4つだけを表示し、ユーザーが持つ画像の数を示すテキストをフッターで表示します。フッターをクリックすると、すべての画像のリストを表示する新しい画面が開きます。これは、私がそれを表示する新しい画面に渡すために、画像の完全なリストを必要としているが、 "メイン画面"に4つしか表示しない理由です。それは状況をより良く説明していますか? – Austie