jimu-decompiled/sources/androidx/recyclerview/widget/ViewInfoStore.java
2025-05-13 19:24:51 +02:00

210 lines
6.5 KiB
Java

package androidx.recyclerview.widget;
import androidx.collection.ArrayMap;
import androidx.collection.LongSparseArray;
import androidx.core.util.Pools$Pool;
import androidx.core.util.Pools$SimplePool;
import androidx.recyclerview.widget.RecyclerView;
/* loaded from: classes.dex */
class ViewInfoStore {
final ArrayMap<RecyclerView.ViewHolder, InfoRecord> a = new ArrayMap<>();
final LongSparseArray<RecyclerView.ViewHolder> b = new LongSparseArray<>();
interface ProcessCallback {
void a(RecyclerView.ViewHolder viewHolder);
void a(RecyclerView.ViewHolder viewHolder, RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo, RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo2);
void b(RecyclerView.ViewHolder viewHolder, RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo, RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo2);
void c(RecyclerView.ViewHolder viewHolder, RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo, RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo2);
}
ViewInfoStore() {
}
void a() {
this.a.clear();
this.b.a();
}
boolean b(RecyclerView.ViewHolder viewHolder) {
InfoRecord infoRecord = this.a.get(viewHolder);
return (infoRecord == null || (infoRecord.a & 1) == 0) ? false : true;
}
void c(RecyclerView.ViewHolder viewHolder, RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo) {
InfoRecord infoRecord = this.a.get(viewHolder);
if (infoRecord == null) {
infoRecord = InfoRecord.b();
this.a.put(viewHolder, infoRecord);
}
infoRecord.b = itemHolderInfo;
infoRecord.a |= 4;
}
public void d(RecyclerView.ViewHolder viewHolder) {
g(viewHolder);
}
RecyclerView.ItemAnimator.ItemHolderInfo e(RecyclerView.ViewHolder viewHolder) {
return a(viewHolder, 8);
}
RecyclerView.ItemAnimator.ItemHolderInfo f(RecyclerView.ViewHolder viewHolder) {
return a(viewHolder, 4);
}
void g(RecyclerView.ViewHolder viewHolder) {
InfoRecord infoRecord = this.a.get(viewHolder);
if (infoRecord == null) {
return;
}
infoRecord.a &= -2;
}
void h(RecyclerView.ViewHolder viewHolder) {
int b = this.b.b() - 1;
while (true) {
if (b < 0) {
break;
}
if (viewHolder == this.b.c(b)) {
this.b.b(b);
break;
}
b--;
}
InfoRecord remove = this.a.remove(viewHolder);
if (remove != null) {
InfoRecord.a(remove);
}
}
private RecyclerView.ItemAnimator.ItemHolderInfo a(RecyclerView.ViewHolder viewHolder, int i) {
InfoRecord d;
RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo;
int a = this.a.a(viewHolder);
if (a >= 0 && (d = this.a.d(a)) != null) {
int i2 = d.a;
if ((i2 & i) != 0) {
d.a = (~i) & i2;
if (i == 4) {
itemHolderInfo = d.b;
} else if (i == 8) {
itemHolderInfo = d.c;
} else {
throw new IllegalArgumentException("Must provide flag PRE or POST");
}
if ((d.a & 12) == 0) {
this.a.c(a);
InfoRecord.a(d);
}
return itemHolderInfo;
}
}
return null;
}
void b(RecyclerView.ViewHolder viewHolder, RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo) {
InfoRecord infoRecord = this.a.get(viewHolder);
if (infoRecord == null) {
infoRecord = InfoRecord.b();
this.a.put(viewHolder, infoRecord);
}
infoRecord.c = itemHolderInfo;
infoRecord.a |= 8;
}
static class InfoRecord {
static Pools$Pool<InfoRecord> d = new Pools$SimplePool(20);
int a;
RecyclerView.ItemAnimator.ItemHolderInfo b;
RecyclerView.ItemAnimator.ItemHolderInfo c;
private InfoRecord() {
}
static void a(InfoRecord infoRecord) {
infoRecord.a = 0;
infoRecord.b = null;
infoRecord.c = null;
d.a(infoRecord);
}
static InfoRecord b() {
InfoRecord a = d.a();
return a == null ? new InfoRecord() : a;
}
static void a() {
while (d.a() != null) {
}
}
}
boolean c(RecyclerView.ViewHolder viewHolder) {
InfoRecord infoRecord = this.a.get(viewHolder);
return (infoRecord == null || (infoRecord.a & 4) == 0) ? false : true;
}
void b() {
InfoRecord.a();
}
void a(long j, RecyclerView.ViewHolder viewHolder) {
this.b.c(j, viewHolder);
}
void a(RecyclerView.ViewHolder viewHolder, RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo) {
InfoRecord infoRecord = this.a.get(viewHolder);
if (infoRecord == null) {
infoRecord = InfoRecord.b();
this.a.put(viewHolder, infoRecord);
}
infoRecord.a |= 2;
infoRecord.b = itemHolderInfo;
}
RecyclerView.ViewHolder a(long j) {
return this.b.b(j);
}
void a(RecyclerView.ViewHolder viewHolder) {
InfoRecord infoRecord = this.a.get(viewHolder);
if (infoRecord == null) {
infoRecord = InfoRecord.b();
this.a.put(viewHolder, infoRecord);
}
infoRecord.a |= 1;
}
void a(ProcessCallback processCallback) {
for (int size = this.a.size() - 1; size >= 0; size--) {
RecyclerView.ViewHolder b = this.a.b(size);
InfoRecord c = this.a.c(size);
int i = c.a;
if ((i & 3) == 3) {
processCallback.a(b);
} else if ((i & 1) != 0) {
RecyclerView.ItemAnimator.ItemHolderInfo itemHolderInfo = c.b;
if (itemHolderInfo == null) {
processCallback.a(b);
} else {
processCallback.b(b, itemHolderInfo, c.c);
}
} else if ((i & 14) == 14) {
processCallback.a(b, c.b, c.c);
} else if ((i & 12) == 12) {
processCallback.c(b, c.b, c.c);
} else if ((i & 4) != 0) {
processCallback.b(b, c.b, null);
} else if ((i & 8) != 0) {
processCallback.a(b, c.b, c.c);
}
InfoRecord.a(c);
}
}
}