私は私の中で時間とともにフィールドを変更しようとしていRecyclerView
ます。各個人ViewHolder
にはCardView
、1つとさらにいくつかのビューが含まれています。アニメーション化したい唯一のビューは、時間のあるビューです。ご覧のとおり、アニメーションはありません。
adapter.notifyDataSetChanged();
アイテムを1つずつ更新しても、全体がCardView
点滅するため、役に立ちません。
int len = adapter.getItemCount();
for(int i=0;i<len;i++) {
adapter.notifyItemChanged(i);
}
すべてのリストを取得して、それぞれの中のViewHolders
その1つだけを更新(アニメーション)する方法はありTextView
ますか?
ペイロードを渡すことで、RecyclerView.Adapter
オブザーバーに部分的な更新を発行するよう通知できます。RecyclerView.ViewHolders
Object
notifyItemRangeChanged(positionStart, itemCount, payload);
payload
相対時間または絶対時間を表すフラグがどこにあるか、または含まれている可能性があります。をpayload
ビューホルダーにバインドするにonBindViewHolder(viewHolder, position, payloads)
は、アダプターで次のメソッドをオーバーライドし、payloads
データのパラメーターを確認します。
@Override
public void onBindViewHolder(MyViewHolder viewHolder, int position, List<Object> payloads) {
if (payloads.isEmpty()) {
// Perform a full update
onBindViewHolder(viewHolder, position);
} else {
// Perform a partial update
for (Object payload : payloads) {
if (payload instanceof TimeFormatPayload) {
viewHolder.bindTimePayload((TimeFormatPayload) payload);
}
}
}
}
MyViewHolder.bindTimePayload(payload)
メソッド内でTextViews
、時刻をで指定された時刻形式に更新しますpayload
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加