0

RecyclerView.Adapterのドキュメントを参照して、異なるnotify...メソッドがどのように機能するかを調べました。状態RecylerViewにViewPagerでこれらの変更が発生したときにデータセットの変更について通知する最善の方法は何ですか?

アダプタを作成している場合、できるだけ具体的な変更イベントを使用する方が効率的です。最後の手段としてnotifyDataSetChanged()に依存してください。

私のRecyclerViewの項目をクリックすると、ViewPagerを含むアクティビティが開始されます。 ViewPagerFragmentStatePagerAdapterを使用します。その結果、私はそうしたいと思えば、私はビューをスワイプして変更することができます。私のポケベルのホスト活動が終了したら、RecyclerViewのアダプターにその変更について通知する必要があります。 - >ホスティング活動は、すべての変更のリストを送信し、それらを編集する場合は、ページャの断片がホスティング活動に通知:私はこのような通信チャネルを設定することができ

  1. :私は続行する2つの可能な方法を見ることができます親アクティビティーは、すべての変更についてRecylerView.AdapterにあるnotifyItemChanged()を呼び出します。私はこれを実装する方法が醜くはないとは思えません。
  2. 私はこれが最後の手段であり、「notifyDataSetChanged()」と呼んでいますが、問題はなくなりましたが、アプリの速度を落とさないという証拠はありません。

私はこれにはかなり新しいので、明らかな解決策が見当たりません。

答えて

1

状況によってはどちらの方法も適用できると思います。正しい決定を下すには、変更される可能性のあるアイテムの量とリスト内のアイテムの総量を考慮する必要があります。

合計アイテム数や多くの変更点は、notifyDataSetChangedを使用してください。

多くのリストアイテムまたは単一変更 - 使用の第1のアプローチ。

アプローチ1は、startActivityForResultを呼び出すことで簡単に実装でき、変更されたアイテムのIDのリストが返されることを期待しています(onActivityResult)。

いつでも両方のアプローチのパフォーマンスを測定し、比較することができます。

+0

あなたの答えをありがとう。 'startActivityForResult()'は通信チャネルの1つの部分に対して論理的に見えます。 2番目の部分には何を使用しますか?フラグメントページには、ホスティングアクティビティにデータを送信する方法が必要です。 –

+1

@LimboExileここでは、データをフラグメントからアクティビティに渡す方法を示します。 https://developer.android.com/training/basics/fragments/communicating.html –

+0

それは断片が現在その活動の方法について知っていることを私に少し邪魔しましたが、公式サイトがこれも推奨しているので、それは行くべき道でなければなりません。 –