2016-05-10 9 views
0

ReyclerViewアダプタをMake OnCreateViewHolder(...)を呼び出さずに更新する方法はありますか?RecyclerViewアダプタの項目を更新せずに、OnCreateViewHolderを呼び出す

私は

mRecyclerView.getAdapter().notifiItemChanged(position)

を行うとき、私はしたくないものをOnCreateViewHolder(...)内側に行くので。私が望んでいない理由は、アイテムビューを展開し、onCreateViewHolder(...)がそれを再膨張させて崩壊したためです。私はOnBindViewHolder(...)と呼ばれるだけです

それに直面した人は誰ですか?

UPD: ちょうどOnCreateViewHolder(...)は、それが呼び出されていないすべての次の回では、唯一の最初の時間と呼ばれていることがわかりました。理由は何ですか? トン

答えて

0

これはRecyclerViewの全体のポイントである:それはOnBindViewHolder()を経由して、可能な限り一回(OnCreateViewHolder()を呼び出す)が作成されたビューホルダー、そして(したがって、ビュー名、またはリサイクル)再利用のプールを処理します。 OnBindViewHolderが(再)ビュー状態を設定しながら

OnCreateViewHolder()が展開ように(どのような状態は、アイテムに関連付けられていることになる

(テキスト・コンテンツのような、選択された状態、...)、ビューを作成するために使用され/折りたたまれた状態)はViewHolderに格納しないでください。例えば、アダプターのプライベート・リストを使用することができます。

0

ので、プログラムでビューを展開している場合、あなたはあなたのデータセット内のデータオブジェクトにboolean isExpandedを追加することができ、その後、onBindViewHolder方法のチェックにisExpandedtrueであるかどうか。 (ビューを展開/折りたたむときにbooleanを切り替えるのを忘れないでください)

関連する問題