AdapterHelper.smali
.class Landroidx/recyclerview/widget/AdapterHelper;
.super Ljava/lang/Object;
.source "AdapterHelper.java"
# interfaces
.implements Landroidx/recyclerview/widget/OpReorderer$Callback;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/recyclerview/widget/AdapterHelper$Callback;,
Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
}
.end annotation
# static fields
.field private static final DEBUG:Z = false
.field static final POSITION_TYPE_INVISIBLE:I = 0x0
.field static final POSITION_TYPE_NEW_OR_LAID_OUT:I = 0x1
.field private static final TAG:Ljava/lang/String; = "AHT"
# instance fields
.field final mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
.field final mDisableRecycler:Z
.field private mExistingUpdateTypes:I
.field mOnItemProcessedCallback:Ljava/lang/Runnable;
.field final mOpReorderer:Landroidx/recyclerview/widget/OpReorderer;
.field final mPendingUpdates:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList<",
"Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;",
">;"
}
.end annotation
.end field
.field final mPostponedList:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList<",
"Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;",
">;"
}
.end annotation
.end field
.field private mUpdateOpPool:Landroidx/core/util/Pools$Pool;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/core/util/Pools$Pool<",
"Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;",
">;"
}
.end annotation
.end field
# direct methods
.method constructor <init>(Landroidx/recyclerview/widget/AdapterHelper$Callback;)V
.registers 3
const/4 v0, 0x0
.line 72
invoke-direct {p0, p1, v0}, Landroidx/recyclerview/widget/AdapterHelper;-><init>(Landroidx/recyclerview/widget/AdapterHelper$Callback;Z)V
return-void
.end method
.method constructor <init>(Landroidx/recyclerview/widget/AdapterHelper$Callback;Z)V
.registers 5
.line 75
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 55
new-instance v0, Landroidx/core/util/Pools$SimplePool;
const/16 v1, 0x1e
invoke-direct {v0, v1}, Landroidx/core/util/Pools$SimplePool;-><init>(I)V
iput-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mUpdateOpPool:Landroidx/core/util/Pools$Pool;
.line 57
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
.line 59
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
const/4 v0, 0x0
.line 69
iput v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
.line 76
iput-object p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
.line 77
iput-boolean p2, p0, Landroidx/recyclerview/widget/AdapterHelper;->mDisableRecycler:Z
.line 78
new-instance p1, Landroidx/recyclerview/widget/OpReorderer;
invoke-direct {p1, p0}, Landroidx/recyclerview/widget/OpReorderer;-><init>(Landroidx/recyclerview/widget/OpReorderer$Callback;)V
iput-object p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mOpReorderer:Landroidx/recyclerview/widget/OpReorderer;
return-void
.end method
.method private applyAdd(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.registers 2
.line 432
invoke-direct {p0, p1}, Landroidx/recyclerview/widget/AdapterHelper;->postponeAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
return-void
.end method
.method private applyMove(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.registers 2
.line 130
invoke-direct {p0, p1}, Landroidx/recyclerview/widget/AdapterHelper;->postponeAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
return-void
.end method
.method private applyRemove(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.registers 12
.line 134
iget v0, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
.line 136
iget v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v2, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/2addr v1, v2
.line 138
iget v2, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
const/4 v3, 0x0
const/4 v4, -0x1
move v5, v3
:goto_c
const/4 v6, 0x0
const/4 v7, 0x2
if-ge v2, v1, :cond_46
.line 140
iget-object v8, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
invoke-interface {v8, v2}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->findViewHolder(I)Landroidx/recyclerview/widget/RecyclerView$ViewHolder;
move-result-object v8
const/4 v9, 0x1
if-nez v8, :cond_2e
.line 141
invoke-direct {p0, v2}, Landroidx/recyclerview/widget/AdapterHelper;->canFindInPreLayout(I)Z
move-result v8
if-eqz v8, :cond_20
goto :goto_2e
:cond_20
if-ne v4, v9, :cond_2b
.line 162
invoke-virtual {p0, v7, v0, v5, v6}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object v4
.line 163
invoke-direct {p0, v4}, Landroidx/recyclerview/widget/AdapterHelper;->postponeAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
move v4, v9
goto :goto_2c
:cond_2b
move v4, v3
:goto_2c
move v6, v3
goto :goto_3b
:cond_2e
:goto_2e
if-nez v4, :cond_39
.line 151
invoke-virtual {p0, v7, v0, v5, v6}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object v4
.line 152
invoke-direct {p0, v4}, Landroidx/recyclerview/widget/AdapterHelper;->dispatchAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
move v4, v9
goto :goto_3a
:cond_39
move v4, v3
:goto_3a
move v6, v9
:goto_3b
if-eqz v4, :cond_41
sub-int/2addr v2, v5
sub-int/2addr v1, v5
move v5, v9
goto :goto_43
:cond_41
add-int/lit8 v5, v5, 0x1
:goto_43
add-int/2addr v2, v9
move v4, v6
goto :goto_c
.line 176
:cond_46
iget v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
if-eq v5, v1, :cond_51
.line 177
invoke-virtual {p0, p1}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOp(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.line 178
invoke-virtual {p0, v7, v0, v5, v6}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object p1
:cond_51
if-nez v4, :cond_57
.line 181
invoke-direct {p0, p1}, Landroidx/recyclerview/widget/AdapterHelper;->dispatchAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
goto :goto_5a
.line 183
:cond_57
invoke-direct {p0, p1}, Landroidx/recyclerview/widget/AdapterHelper;->postponeAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
:goto_5a
return-void
.end method
.method private applyUpdate(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.registers 11
.line 188
iget v0, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
.line 190
iget v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v2, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/2addr v1, v2
.line 192
iget v2, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
const/4 v3, 0x0
const/4 v4, -0x1
move v5, v3
:goto_c
const/4 v6, 0x4
if-ge v2, v1, :cond_40
.line 193
iget-object v7, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
invoke-interface {v7, v2}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->findViewHolder(I)Landroidx/recyclerview/widget/RecyclerView$ViewHolder;
move-result-object v7
const/4 v8, 0x1
if-nez v7, :cond_2e
.line 194
invoke-direct {p0, v2}, Landroidx/recyclerview/widget/AdapterHelper;->canFindInPreLayout(I)Z
move-result v7
if-eqz v7, :cond_1f
goto :goto_2e
:cond_1f
if-ne v4, v8, :cond_2c
.line 205
iget-object v4, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->payload:Ljava/lang/Object;
invoke-virtual {p0, v6, v0, v5, v4}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object v0
.line 207
invoke-direct {p0, v0}, Landroidx/recyclerview/widget/AdapterHelper;->postponeAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
move v0, v2
move v5, v3
:cond_2c
move v4, v3
goto :goto_3c
:cond_2e
:goto_2e
if-nez v4, :cond_3b
.line 196
iget-object v4, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->payload:Ljava/lang/Object;
invoke-virtual {p0, v6, v0, v5, v4}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object v0
.line 198
invoke-direct {p0, v0}, Landroidx/recyclerview/widget/AdapterHelper;->dispatchAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
move v0, v2
move v5, v3
:cond_3b
move v4, v8
:goto_3c
add-int/2addr v5, v8
add-int/lit8 v2, v2, 0x1
goto :goto_c
.line 215
:cond_40
iget v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
if-eq v5, v1, :cond_4d
.line 216
iget-object v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->payload:Ljava/lang/Object;
.line 217
invoke-virtual {p0, p1}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOp(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.line 218
invoke-virtual {p0, v6, v0, v5, v1}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object p1
:cond_4d
if-nez v4, :cond_53
.line 221
invoke-direct {p0, p1}, Landroidx/recyclerview/widget/AdapterHelper;->dispatchAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
goto :goto_56
.line 223
:cond_53
invoke-direct {p0, p1}, Landroidx/recyclerview/widget/AdapterHelper;->postponeAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
:goto_56
return-void
.end method
.method private canFindInPreLayout(I)Z
.registers 9
.line 411
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
const/4 v1, 0x0
move v2, v1
:goto_8
if-ge v2, v0, :cond_40
.line 413
iget-object v3, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v3, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
.line 414
iget v4, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/16 v5, 0x8
const/4 v6, 0x1
if-ne v4, v5, :cond_24
.line 415
iget v3, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/lit8 v4, v2, 0x1
invoke-virtual {p0, v3, v4}, Landroidx/recyclerview/widget/AdapterHelper;->findPositionOffset(II)I
move-result v3
if-ne v3, p1, :cond_3d
return v6
.line 418
:cond_24
iget v4, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
if-ne v4, v6, :cond_3d
.line 420
iget v4, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v5, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/2addr v4, v5
.line 421
iget v3, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
:goto_2f
if-ge v3, v4, :cond_3d
add-int/lit8 v5, v2, 0x1
.line 422
invoke-virtual {p0, v3, v5}, Landroidx/recyclerview/widget/AdapterHelper;->findPositionOffset(II)I
move-result v5
if-ne v5, p1, :cond_3a
return v6
:cond_3a
add-int/lit8 v3, v3, 0x1
goto :goto_2f
:cond_3d
add-int/lit8 v2, v2, 0x1
goto :goto_8
:cond_40
return v1
.end method
.method private dispatchAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.registers 14
.line 231
iget v0, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/4 v1, 0x1
if-eq v0, v1, :cond_8b
iget v0, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/16 v2, 0x8
if-eq v0, v2, :cond_8b
.line 245
iget v0, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v2, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
invoke-direct {p0, v0, v2}, Landroidx/recyclerview/widget/AdapterHelper;->updatePositionWithPostponed(II)I
move-result v0
.line 250
iget v2, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
.line 252
iget v3, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/4 v4, 0x2
const/4 v5, 0x4
const/4 v6, 0x0
if-eq v3, v4, :cond_37
if-ne v3, v5, :cond_20
move v3, v1
goto :goto_38
.line 260
:cond_20
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "op should be remove or update."
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_37
move v3, v6
:goto_38
move v7, v1
move v8, v7
.line 262
:goto_3a
iget v9, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
if-ge v7, v9, :cond_77
.line 263
iget v9, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
mul-int v10, v3, v7
add-int/2addr v9, v10
.line 264
iget v10, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
invoke-direct {p0, v9, v10}, Landroidx/recyclerview/widget/AdapterHelper;->updatePositionWithPostponed(II)I
move-result v9
.line 269
iget v10, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
if-eq v10, v4, :cond_57
if-eq v10, v5, :cond_51
:cond_4f
move v10, v6
goto :goto_5a
:cond_51
add-int/lit8 v10, v0, 0x1
if-ne v9, v10, :cond_4f
:goto_55
move v10, v1
goto :goto_5a
:cond_57
if-ne v9, v0, :cond_4f
goto :goto_55
:goto_5a
if-eqz v10, :cond_5f
add-int/lit8 v8, v8, 0x1
goto :goto_74
.line 281
:cond_5f
iget v10, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
iget-object v11, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->payload:Ljava/lang/Object;
invoke-virtual {p0, v10, v0, v8, v11}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object v0
.line 285
invoke-virtual {p0, v0, v2}, Landroidx/recyclerview/widget/AdapterHelper;->dispatchFirstPassAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;I)V
.line 286
invoke-virtual {p0, v0}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOp(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.line 287
iget v0, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
if-ne v0, v5, :cond_72
add-int/2addr v2, v8
:cond_72
move v8, v1
move v0, v9
:goto_74
add-int/lit8 v7, v7, 0x1
goto :goto_3a
.line 294
:cond_77
iget-object v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->payload:Ljava/lang/Object;
.line 295
invoke-virtual {p0, p1}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOp(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
if-lez v8, :cond_8a
.line 297
iget p1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
invoke-virtual {p0, p1, v0, v8, v1}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object p1
.line 301
invoke-virtual {p0, p1, v2}, Landroidx/recyclerview/widget/AdapterHelper;->dispatchFirstPassAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;I)V
.line 302
invoke-virtual {p0, p1}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOp(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
:cond_8a
return-void
.line 232
:cond_8b
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string v0, "should not dispatch add or move for pre layout"
invoke-direct {p1, v0}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method private postponeAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.registers 5
.line 439
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 440
iget v0, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/4 v1, 0x1
if-eq v0, v1, :cond_4b
const/4 v1, 0x2
if-eq v0, v1, :cond_41
const/4 v1, 0x4
if-eq v0, v1, :cond_35
const/16 v1, 0x8
if-ne v0, v1, :cond_1e
.line 445
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget p1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
invoke-interface {v0, v1, p1}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->offsetPositionsForMove(II)V
goto :goto_54
.line 455
:cond_1e
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Unknown update op type for "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.line 452
:cond_35
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v2, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
iget-object p1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->payload:Ljava/lang/Object;
invoke-interface {v0, v1, v2, p1}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->markViewHoldersUpdated(IILjava/lang/Object;)V
goto :goto_54
.line 448
:cond_41
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget p1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
invoke-interface {v0, v1, p1}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->offsetPositionsForRemovingLaidOutOrNewView(II)V
goto :goto_54
.line 442
:cond_4b
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget p1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
invoke-interface {v0, v1, p1}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->offsetPositionsForAdd(II)V
:goto_54
return-void
.end method
.method private updatePositionWithPostponed(II)I
.registers 9
.line 330
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
const/4 v1, 0x1
sub-int/2addr v0, v1
:goto_8
const/16 v2, 0x8
if-ltz v0, :cond_99
.line 332
iget-object v3, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v3, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
.line 333
iget v4, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/4 v5, 0x2
if-ne v4, v2, :cond_72
.line 335
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v4, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
if-ge v2, v4, :cond_24
.line 336
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
.line 337
iget v4, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
goto :goto_28
.line 339
:cond_24
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
.line 340
iget v4, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
:goto_28
if-lt p1, v2, :cond_54
if-gt p1, v4, :cond_54
.line 344
iget v4, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-ne v2, v4, :cond_42
if-ne p2, v1, :cond_38
.line 346
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/2addr v2, v1
iput v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
goto :goto_3f
:cond_38
if-ne p2, v5, :cond_3f
.line 348
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
sub-int/2addr v2, v1
iput v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
:cond_3f
:goto_3f
add-int/lit8 p1, p1, 0x1
goto :goto_95
:cond_42
if-ne p2, v1, :cond_4a
.line 354
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
add-int/2addr v2, v1
iput v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
goto :goto_51
:cond_4a
if-ne p2, v5, :cond_51
.line 356
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
sub-int/2addr v2, v1
iput v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
:cond_51
:goto_51
add-int/lit8 p1, p1, -0x1
goto :goto_95
.line 361
:cond_54
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-ge p1, v2, :cond_95
if-ne p2, v1, :cond_65
.line 364
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
add-int/2addr v2, v1
iput v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
.line 365
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/2addr v2, v1
iput v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
goto :goto_95
:cond_65
if-ne p2, v5, :cond_95
.line 367
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
sub-int/2addr v2, v1
iput v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
.line 368
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
sub-int/2addr v2, v1
iput v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
goto :goto_95
.line 372
:cond_72
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-gt v2, p1, :cond_86
.line 373
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
if-ne v2, v1, :cond_7e
.line 374
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
sub-int/2addr p1, v2
goto :goto_95
.line 375
:cond_7e
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
if-ne v2, v5, :cond_95
.line 376
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/2addr p1, v2
goto :goto_95
:cond_86
if-ne p2, v1, :cond_8e
.line 380
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
add-int/2addr v2, v1
iput v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
goto :goto_95
:cond_8e
if-ne p2, v5, :cond_95
.line 382
iget v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
sub-int/2addr v2, v1
iput v2, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
:cond_95
:goto_95
add-int/lit8 v0, v0, -0x1
goto/16 :goto_8
.line 395
:cond_99
iget-object p2, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {p2}, Ljava/util/ArrayList;->size()I
move-result p2
sub-int/2addr p2, v1
:goto_a0
if-ltz p2, :cond_d0
.line 396
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v0, p2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
.line 397
iget v1, v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
if-ne v1, v2, :cond_c1
.line 398
iget v1, v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
iget v3, v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-eq v1, v3, :cond_b8
iget v1, v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
if-gez v1, :cond_cd
.line 399
:cond_b8
iget-object v1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v1, p2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
.line 400
invoke-virtual {p0, v0}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOp(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
goto :goto_cd
.line 402
:cond_c1
iget v1, v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
if-gtz v1, :cond_cd
.line 403
iget-object v1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v1, p2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
.line 404
invoke-virtual {p0, v0}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOp(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
:cond_cd
:goto_cd
add-int/lit8 p2, p2, -0x1
goto :goto_a0
:cond_d0
return p1
.end method
# virtual methods
.method varargs addUpdateOp([Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)Landroidx/recyclerview/widget/AdapterHelper;
.registers 3
.line 82
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-static {v0, p1}, Ljava/util/Collections;->addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z
return-object p0
.end method
.method public applyPendingUpdatesToPosition(I)I
.registers 7
.line 588
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
const/4 v1, 0x0
:goto_7
if-ge v1, v0, :cond_4d
.line 590
iget-object v2, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
.line 591
iget v3, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/4 v4, 0x1
if-eq v3, v4, :cond_43
const/4 v4, 0x2
if-eq v3, v4, :cond_32
const/16 v4, 0x8
if-eq v3, v4, :cond_1e
goto :goto_4a
.line 607
:cond_1e
iget v3, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-ne v3, p1, :cond_25
.line 608
iget p1, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
goto :goto_4a
.line 610
:cond_25
iget v3, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-ge v3, p1, :cond_2b
add-int/lit8 p1, p1, -0x1
.line 613
:cond_2b
iget v2, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
if-gt v2, p1, :cond_4a
add-int/lit8 p1, p1, 0x1
goto :goto_4a
.line 598
:cond_32
iget v3, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-gt v3, p1, :cond_4a
.line 599
iget v3, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v4, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/2addr v3, v4
if-le v3, p1, :cond_3f
const/4 p1, -0x1
return p1
.line 603
:cond_3f
iget v2, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
sub-int/2addr p1, v2
goto :goto_4a
.line 593
:cond_43
iget v3, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-gt v3, p1, :cond_4a
.line 594
iget v2, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/2addr p1, v2
:cond_4a
:goto_4a
add-int/lit8 v1, v1, 0x1
goto :goto_7
:cond_4d
return p1
.end method
.method consumePostponedUpdates()V
.registers 6
.line 119
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
const/4 v1, 0x0
move v2, v1
:goto_8
if-ge v2, v0, :cond_1a
.line 121
iget-object v3, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget-object v4, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v4, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
invoke-interface {v3, v4}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->onDispatchSecondPass(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
add-int/lit8 v2, v2, 0x1
goto :goto_8
.line 123
:cond_1a
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {p0, v0}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOpsAndClearList(Ljava/util/List;)V
.line 124
iput v1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
return-void
.end method
.method consumeUpdatesInOnePass()V
.registers 8
.line 557
invoke-virtual {p0}, Landroidx/recyclerview/widget/AdapterHelper;->consumePostponedUpdates()V
.line 558
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
const/4 v1, 0x0
move v2, v1
:goto_b
if-ge v2, v0, :cond_6c
.line 560
iget-object v3, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {v3, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
.line 561
iget v4, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/4 v5, 0x1
if-eq v4, v5, :cond_54
const/4 v5, 0x2
if-eq v4, v5, :cond_45
const/4 v5, 0x4
if-eq v4, v5, :cond_34
const/16 v5, 0x8
if-eq v4, v5, :cond_25
goto :goto_62
.line 575
:cond_25
iget-object v4, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
invoke-interface {v4, v3}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->onDispatchSecondPass(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.line 576
iget-object v4, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget v5, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v3, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
invoke-interface {v4, v5, v3}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->offsetPositionsForMove(II)V
goto :goto_62
.line 571
:cond_34
iget-object v4, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
invoke-interface {v4, v3}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->onDispatchSecondPass(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.line 572
iget-object v4, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget v5, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v6, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
iget-object v3, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->payload:Ljava/lang/Object;
invoke-interface {v4, v5, v6, v3}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->markViewHoldersUpdated(IILjava/lang/Object;)V
goto :goto_62
.line 567
:cond_45
iget-object v4, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
invoke-interface {v4, v3}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->onDispatchSecondPass(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.line 568
iget-object v4, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget v5, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v3, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
invoke-interface {v4, v5, v3}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->offsetPositionsForRemovingInvisible(II)V
goto :goto_62
.line 563
:cond_54
iget-object v4, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
invoke-interface {v4, v3}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->onDispatchSecondPass(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.line 564
iget-object v4, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget v5, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v3, v3, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
invoke-interface {v4, v5, v3}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->offsetPositionsForAdd(II)V
.line 579
:goto_62
iget-object v3, p0, Landroidx/recyclerview/widget/AdapterHelper;->mOnItemProcessedCallback:Ljava/lang/Runnable;
if-eqz v3, :cond_69
.line 580
invoke-interface {v3}, Ljava/lang/Runnable;->run()V
:cond_69
add-int/lit8 v2, v2, 0x1
goto :goto_b
.line 583
:cond_6c
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {p0, v0}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOpsAndClearList(Ljava/util/List;)V
.line 584
iput v1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
return-void
.end method
.method dispatchFirstPassAndUpdateViewHolders(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;I)V
.registers 5
.line 315
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
invoke-interface {v0, p1}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->onDispatchFirstPass(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.line 316
iget v0, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/4 v1, 0x2
if-eq v0, v1, :cond_1f
const/4 v1, 0x4
if-ne v0, v1, :cond_17
.line 321
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget v1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
iget-object p1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->payload:Ljava/lang/Object;
invoke-interface {v0, p2, v1, p1}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->markViewHoldersUpdated(IILjava/lang/Object;)V
goto :goto_26
.line 324
:cond_17
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "only remove and update ops can be dispatched in first pass"
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.line 318
:cond_1f
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mCallback:Landroidx/recyclerview/widget/AdapterHelper$Callback;
iget p1, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
invoke-interface {v0, p2, p1}, Landroidx/recyclerview/widget/AdapterHelper$Callback;->offsetPositionsForRemovingInvisible(II)V
:goto_26
return-void
.end method
.method findPositionOffset(I)I
.registers 3
const/4 v0, 0x0
.line 468
invoke-virtual {p0, p1, v0}, Landroidx/recyclerview/widget/AdapterHelper;->findPositionOffset(II)I
move-result p1
return p1
.end method
.method findPositionOffset(II)I
.registers 7
.line 472
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
:goto_6
if-ge p2, v0, :cond_4b
.line 474
iget-object v1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v1, p2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
.line 475
iget v2, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/16 v3, 0x8
if-ne v2, v3, :cond_2a
.line 476
iget v2, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-ne v2, p1, :cond_1d
.line 477
iget p1, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
goto :goto_48
.line 479
:cond_1d
iget v2, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-ge v2, p1, :cond_23
add-int/lit8 p1, p1, -0x1
.line 482
:cond_23
iget v1, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
if-gt v1, p1, :cond_48
add-int/lit8 p1, p1, 0x1
goto :goto_48
.line 486
:cond_2a
iget v2, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
if-gt v2, p1, :cond_48
.line 487
iget v2, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/4 v3, 0x2
if-ne v2, v3, :cond_40
.line 488
iget v2, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
iget v3, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/2addr v2, v3
if-ge p1, v2, :cond_3c
const/4 p1, -0x1
return p1
.line 491
:cond_3c
iget v1, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
sub-int/2addr p1, v1
goto :goto_48
.line 492
:cond_40
iget v2, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/4 v3, 0x1
if-ne v2, v3, :cond_48
.line 493
iget v1, v1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
add-int/2addr p1, v1
:cond_48
:goto_48
add-int/lit8 p2, p2, 0x1
goto :goto_6
:cond_4b
return p1
.end method
.method hasAnyUpdateTypes(I)Z
.registers 3
.line 464
iget v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
and-int/2addr p1, v0
if-eqz p1, :cond_7
const/4 p1, 0x1
goto :goto_8
:cond_7
const/4 p1, 0x0
:goto_8
return p1
.end method
.method hasPendingUpdates()Z
.registers 2
.line 460
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
if-lez v0, :cond_a
const/4 v0, 0x1
goto :goto_b
:cond_a
const/4 v0, 0x0
:goto_b
return v0
.end method
.method hasUpdates()Z
.registers 2
.line 624
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result v0
if-nez v0, :cond_12
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result v0
if-nez v0, :cond_12
const/4 v0, 0x1
goto :goto_13
:cond_12
const/4 v0, 0x0
:goto_13
return v0
.end method
.method public obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
.registers 6
.line 727
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mUpdateOpPool:Landroidx/core/util/Pools$Pool;
invoke-interface {v0}, Landroidx/core/util/Pools$Pool;->acquire()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
if-nez v0, :cond_10
.line 729
new-instance v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
invoke-direct {v0, p1, p2, p3, p4}, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;-><init>(IIILjava/lang/Object;)V
goto :goto_18
.line 731
:cond_10
iput p1, v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
.line 732
iput p2, v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->positionStart:I
.line 733
iput p3, v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->itemCount:I
.line 734
iput-object p4, v0, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->payload:Ljava/lang/Object;
:goto_18
return-object v0
.end method
.method onItemRangeChanged(IILjava/lang/Object;)Z
.registers 8
const/4 v0, 0x0
const/4 v1, 0x1
if-ge p2, v1, :cond_5
return v0
.line 507
:cond_5
iget-object v2, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
const/4 v3, 0x4
invoke-virtual {p0, v3, p1, p2, p3}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object p1
invoke-virtual {v2, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 508
iget p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
or-int/2addr p1, v3
iput p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
.line 509
iget-object p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {p1}, Ljava/util/ArrayList;->size()I
move-result p1
if-ne p1, v1, :cond_1d
move v0, v1
:cond_1d
return v0
.end method
.method onItemRangeInserted(II)Z
.registers 7
const/4 v0, 0x0
const/4 v1, 0x1
if-ge p2, v1, :cond_5
return v0
.line 519
:cond_5
iget-object v2, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
const/4 v3, 0x0
invoke-virtual {p0, v1, p1, p2, v3}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object p1
invoke-virtual {v2, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 520
iget p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
or-int/2addr p1, v1
iput p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
.line 521
iget-object p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {p1}, Ljava/util/ArrayList;->size()I
move-result p1
if-ne p1, v1, :cond_1d
move v0, v1
:cond_1d
return v0
.end method
.method onItemRangeMoved(III)Z
.registers 8
const/4 v0, 0x0
if-ne p1, p2, :cond_4
return v0
:cond_4
const/4 v1, 0x1
if-ne p3, v1, :cond_22
.line 546
iget-object p3, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
const/4 v2, 0x0
const/16 v3, 0x8
invoke-virtual {p0, v3, p1, p2, v2}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object p1
invoke-virtual {p3, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 547
iget p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
or-int/2addr p1, v3
iput p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
.line 548
iget-object p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {p1}, Ljava/util/ArrayList;->size()I
move-result p1
if-ne p1, v1, :cond_21
move v0, v1
:cond_21
return v0
.line 544
:cond_22
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "Moving more than 1 item is not supported yet"
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method onItemRangeRemoved(II)Z
.registers 8
const/4 v0, 0x0
const/4 v1, 0x1
if-ge p2, v1, :cond_5
return v0
.line 531
:cond_5
iget-object v2, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
const/4 v3, 0x0
const/4 v4, 0x2
invoke-virtual {p0, v4, p1, p2, v3}, Landroidx/recyclerview/widget/AdapterHelper;->obtainUpdateOp(IIILjava/lang/Object;)Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
move-result-object p1
invoke-virtual {v2, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 532
iget p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
or-int/2addr p1, v4
iput p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
.line 533
iget-object p1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {p1}, Ljava/util/ArrayList;->size()I
move-result p1
if-ne p1, v1, :cond_1e
move v0, v1
:cond_1e
return v0
.end method
.method preProcess()V
.registers 6
.line 93
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mOpReorderer:Landroidx/recyclerview/widget/OpReorderer;
iget-object v1, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {v0, v1}, Landroidx/recyclerview/widget/OpReorderer;->reorderOps(Ljava/util/List;)V
.line 94
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
const/4 v1, 0x0
:goto_e
if-ge v1, v0, :cond_41
.line 96
iget-object v2, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
.line 97
iget v3, v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->cmd:I
const/4 v4, 0x1
if-eq v3, v4, :cond_34
const/4 v4, 0x2
if-eq v3, v4, :cond_30
const/4 v4, 0x4
if-eq v3, v4, :cond_2c
const/16 v4, 0x8
if-eq v3, v4, :cond_28
goto :goto_37
.line 108
:cond_28
invoke-direct {p0, v2}, Landroidx/recyclerview/widget/AdapterHelper;->applyMove(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
goto :goto_37
.line 105
:cond_2c
invoke-direct {p0, v2}, Landroidx/recyclerview/widget/AdapterHelper;->applyUpdate(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
goto :goto_37
.line 102
:cond_30
invoke-direct {p0, v2}, Landroidx/recyclerview/widget/AdapterHelper;->applyRemove(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
goto :goto_37
.line 99
:cond_34
invoke-direct {p0, v2}, Landroidx/recyclerview/widget/AdapterHelper;->applyAdd(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.line 111
:goto_37
iget-object v2, p0, Landroidx/recyclerview/widget/AdapterHelper;->mOnItemProcessedCallback:Ljava/lang/Runnable;
if-eqz v2, :cond_3e
.line 112
invoke-interface {v2}, Ljava/lang/Runnable;->run()V
:cond_3e
add-int/lit8 v1, v1, 0x1
goto :goto_e
.line 115
:cond_41
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->clear()V
return-void
.end method
.method public recycleUpdateOp(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
.registers 3
.line 741
iget-boolean v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mDisableRecycler:Z
if-nez v0, :cond_c
const/4 v0, 0x0
.line 742
iput-object v0, p1, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;->payload:Ljava/lang/Object;
.line 743
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mUpdateOpPool:Landroidx/core/util/Pools$Pool;
invoke-interface {v0, p1}, Landroidx/core/util/Pools$Pool;->release(Ljava/lang/Object;)Z
:cond_c
return-void
.end method
.method recycleUpdateOpsAndClearList(Ljava/util/List;)V
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;",
">;)V"
}
.end annotation
.line 748
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
const/4 v1, 0x0
:goto_5
if-ge v1, v0, :cond_13
.line 750
invoke-interface {p1, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;
invoke-virtual {p0, v2}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOp(Landroidx/recyclerview/widget/AdapterHelper$UpdateOp;)V
add-int/lit8 v1, v1, 0x1
goto :goto_5
.line 752
:cond_13
invoke-interface {p1}, Ljava/util/List;->clear()V
return-void
.end method
.method reset()V
.registers 2
.line 87
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPendingUpdates:Ljava/util/ArrayList;
invoke-virtual {p0, v0}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOpsAndClearList(Ljava/util/List;)V
.line 88
iget-object v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mPostponedList:Ljava/util/ArrayList;
invoke-virtual {p0, v0}, Landroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOpsAndClearList(Ljava/util/List;)V
const/4 v0, 0x0
.line 89
iput v0, p0, Landroidx/recyclerview/widget/AdapterHelper;->mExistingUpdateTypes:I
return-void
.end method