私はRecyclerViewで40のアイテムを持っているとしましょう。その中の20項目すべてがタッチされたときに起動される同じ意図を保持します。 5秒間隔で意図が変わるので、40個のアイテムのうち20個がインテントを置き換えますRecyclerViewの一部のアイテムを再バインドせずに更新する方法はありますか?
20個のアイテムのそれぞれを再バインドせずに保持するインテントをすべて更新する方法はありますか?
リバインドするたびにアイテムが消えて表示され、5秒の時間間隔で項目が常に表示されたり消えたりすることは視覚的には気になりません。
変数がすべてオブジェクトを指すはずだと思っていたので、そのオブジェクトが更新されると、アイテムの意図も更新されるようになりました。しかし、Javaは価値がないので、そこにチャンスはありません。
アイデア?
データが変更されたことをアダプタに通知せずにデータを更新しても、何の効果もありません。アダプターに通知があった場合にのみ、新しい値が古い値に置き換えられます。私の場合、視覚的な変更は必要ありませんが、アダプタに電話するまでデータは更新されませんでした。 'notifyDataSetChanged()' – Kyle
@Kyle。これが起こる理由はたくさんあります。私は、アダプタが 'List'のような何らかの基本的なデータ構造に裏打ちされていると仮定します。 'onBind()'が呼び出されるたびに、 'x 'の位置に項目を渡して' ViewHolder'に渡したと仮定します。アダプタに通知することなく、 'x'の位置でアイテムを更新することができます。両方のオブジェクトには同じアイテムへの参照が含まれているため、 'List'と' ViewHolder'の両方で更新されます。ただし、アイテムをキャッシュまたはコピーしている場合は、2つの参照が作成されます。 – DeeV
あなたはそうです - 私のアダプターはデータ構造で裏付けされています。もしそうでなければ、あなたが言ったことはおそらくうまくいくでしょう。それにもかかわらず、ItemAnimatorを使いこなすことで、私が望んでいたことが分かりました - 優れた提案に感謝します。 – Kyle