これは予期された動作ですか?
短い答え:はい。
notifyDataSetChanged()
上のドキュメントから(はい、別の方法で、私は知っているが、それはアイテムの違いはと構造変化変更について説明しますので、ちょうどここでそれを参照する):異なる二つがあります
をデータ変更イベントのクラス、アイテムの変更、および構造の変更。アイテムの変更は、1つのアイテムのデータが更新されても、位置の変更が発生していない場合に発生します。構造的変更とは、アイテムがデータセット内で挿入、削除、または移動される場合です。
は今(私の強調)notifyItemRangeChanged()
上のドキュメントを読んを持っている:
これは、アイテム変更イベントではなく、構造的な変化イベントです。これは、指定された位置範囲のデータの反映が期限切れであり、更新する必要があることを示します。指定された範囲内の項目は同じIDを保持します。
あなたの質問にお答えください。 構造変更(すなわち、アイテムを追加しています)を作成しているため、ではなく、で適切な呼び出し方法があります。代わりにnotifyItemRangeInserted()
(またはその単数の同等物)に電話する必要があります。これは構造変更が行われたことを示しています。
詳細な回答ありがとうございます。私のアダプター構造はサブアダプターで構成されているので残念です。親アダプター全体をリフレッシュする代わりに、サブアダプターが親アダプターに範囲変更を通知してほしいと思っています。しかし、今、私はそれについて考えて、 'notifyItemRangeInserted'を使う代わりに何をしなければならないのでしょうか?親アダプタは新しいデータを知っています... とにかく、私は今や馬鹿げています。再度、感謝します :) – Jin