HeaderAndFooterWrapper.smali
.class public Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;
.super Landroid/support/v7/widget/RecyclerView$Adapter;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper$ViewHolder;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroid/support/v7/widget/RecyclerView$Adapter",
"<",
"Landroid/support/v7/widget/RecyclerView$ViewHolder;",
">;"
}
.end annotation
# static fields
.field private static final TYPE_FOOTER_VIEW:I = -0x7fffffff
.field private static final TYPE_HEADER_VIEW:I = -0x80000000
# instance fields
.field private mDataObserver:Landroid/support/v7/widget/RecyclerView$AdapterDataObserver;
.field private mFooterViews:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList",
"<",
"Landroid/view/View;",
">;"
}
.end annotation
.end field
.field private mHeaderViews:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList",
"<",
"Landroid/view/View;",
">;"
}
.end annotation
.end field
.field private mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroid/support/v7/widget/RecyclerView$Adapter",
"<",
"Landroid/support/v7/widget/RecyclerView$ViewHolder;",
">;"
}
.end annotation
.end field
# direct methods
.method public constructor <init>()V
.registers 2
invoke-direct {p0}, Landroid/support/v7/widget/RecyclerView$Adapter;-><init>()V
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mHeaderViews:Ljava/util/ArrayList;
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mFooterViews:Ljava/util/ArrayList;
new-instance v0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper$1;
invoke-direct {v0, p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper$1;-><init>(Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;)V
iput-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mDataObserver:Landroid/support/v7/widget/RecyclerView$AdapterDataObserver;
return-void
.end method
.method public constructor <init>(Landroid/support/v7/widget/RecyclerView$Adapter;)V
.registers 3
invoke-direct {p0}, Landroid/support/v7/widget/RecyclerView$Adapter;-><init>()V
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mHeaderViews:Ljava/util/ArrayList;
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mFooterViews:Ljava/util/ArrayList;
new-instance v0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper$1;
invoke-direct {v0, p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper$1;-><init>(Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;)V
iput-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mDataObserver:Landroid/support/v7/widget/RecyclerView$AdapterDataObserver;
invoke-virtual {p0, p1}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->setAdapter(Landroid/support/v7/widget/RecyclerView$Adapter;)V
return-void
.end method
# virtual methods
.method public addFooterView(Landroid/view/View;)V
.registers 4
if-nez p1, :cond_b
new-instance v0, Ljava/lang/RuntimeException;
const-string/jumbo v1, "footer is null"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
:cond_b
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mFooterViews:Ljava/util/ArrayList;
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
return-void
.end method
.method public addHeaderView(Landroid/view/View;)V
.registers 4
if-nez p1, :cond_b
new-instance v0, Ljava/lang/RuntimeException;
const-string/jumbo v1, "header is null"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
:cond_b
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mHeaderViews:Ljava/util/ArrayList;
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
return-void
.end method
.method public getFooterView()Landroid/view/View;
.registers 3
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getFooterViewsCount()I
move-result v0
if-lez v0, :cond_10
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mFooterViews:Ljava/util/ArrayList;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/view/View;
:goto_f
return-object v0
:cond_10
const/4 v0, 0x0
goto :goto_f
.end method
.method public getFooterViewsCount()I
.registers 2
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mFooterViews:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
return v0
.end method
.method public getHeaderView()Landroid/view/View;
.registers 3
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getHeaderViewsCount()I
move-result v0
if-lez v0, :cond_10
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mHeaderViews:Ljava/util/ArrayList;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/view/View;
:goto_f
return-object v0
:cond_10
const/4 v0, 0x0
goto :goto_f
.end method
.method public getHeaderViewsCount()I
.registers 2
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mHeaderViews:Ljava/util/ArrayList;
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
return v0
.end method
.method public getInnerAdapter()Landroid/support/v7/widget/RecyclerView$Adapter;
.registers 2
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
return-object v0
.end method
.method public getItemCount()I
.registers 3
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getHeaderViewsCount()I
move-result v0
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getFooterViewsCount()I
move-result v1
add-int/2addr v0, v1
iget-object v1, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
invoke-virtual {v1}, Landroid/support/v7/widget/RecyclerView$Adapter;->getItemCount()I
move-result v1
add-int/2addr v0, v1
return v0
.end method
.method public getItemViewType(I)I
.registers 6
const v3, 0x3fffffff # 1.9999999f
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
invoke-virtual {v0}, Landroid/support/v7/widget/RecyclerView$Adapter;->getItemCount()I
move-result v0
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getHeaderViewsCount()I
move-result v1
if-ge p1, v1, :cond_13
const/high16 v0, -0x80000000
add-int/2addr v0, p1
:goto_12
return v0
:cond_13
if-gt v1, p1, :cond_2e
add-int v2, v1, v0
if-ge p1, v2, :cond_2e
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
sub-int v1, p1, v1
invoke-virtual {v0, v1}, Landroid/support/v7/widget/RecyclerView$Adapter;->getItemViewType(I)I
move-result v0
if-lt v0, v3, :cond_2c
new-instance v0, Ljava/lang/IllegalArgumentException;
const-string/jumbo v1, "your adapter\'s return value of getViewTypeCount() must < Integer.MAX_VALUE / 2"
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:cond_2c
add-int/2addr v0, v3
goto :goto_12
:cond_2e
const v2, -0x7fffffff
add-int/2addr v2, p1
sub-int v1, v2, v1
sub-int v0, v1, v0
goto :goto_12
.end method
.method public isFooter(I)Z
.registers 4
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getItemCount()I
move-result v0
add-int/lit8 v0, v0, -0x1
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getFooterViewsCount()I
move-result v1
if-lez v1, :cond_10
if-ne p1, v0, :cond_10
const/4 v0, 0x1
:goto_f
return v0
:cond_10
const/4 v0, 0x0
goto :goto_f
.end method
.method public isHeader(I)Z
.registers 3
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getHeaderViewsCount()I
move-result v0
if-lez v0, :cond_a
if-nez p1, :cond_a
const/4 v0, 0x1
:goto_9
return v0
:cond_a
const/4 v0, 0x0
goto :goto_9
.end method
.method public onBindViewHolder(Landroid/support/v7/widget/RecyclerView$ViewHolder;I)V
.registers 5
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getHeaderViewsCount()I
move-result v0
if-lt p2, v0, :cond_17
iget-object v1, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
invoke-virtual {v1}, Landroid/support/v7/widget/RecyclerView$Adapter;->getItemCount()I
move-result v1
add-int/2addr v1, v0
if-ge p2, v1, :cond_17
iget-object v1, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
sub-int v0, p2, v0
invoke-virtual {v1, p1, v0}, Landroid/support/v7/widget/RecyclerView$Adapter;->onBindViewHolder(Landroid/support/v7/widget/RecyclerView$ViewHolder;I)V
:cond_16
:goto_16
return-void
:cond_17
iget-object v0, p1, Landroid/support/v7/widget/RecyclerView$ViewHolder;->itemView:Landroid/view/View;
invoke-virtual {v0}, Landroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams;
move-result-object v0
instance-of v1, v0, Landroid/support/v7/widget/StaggeredGridLayoutManager$LayoutParams;
if-eqz v1, :cond_16
check-cast v0, Landroid/support/v7/widget/StaggeredGridLayoutManager$LayoutParams;
const/4 v1, 0x1
invoke-virtual {v0, v1}, Landroid/support/v7/widget/StaggeredGridLayoutManager$LayoutParams;->setFullSpan(Z)V
goto :goto_16
.end method
.method public onCreateViewHolder(Landroid/view/ViewGroup;I)Landroid/support/v7/widget/RecyclerView$ViewHolder;
.registers 7
const v1, 0x3fffffff # 1.9999999f
const v3, -0x7fffffff
const/high16 v2, -0x80000000
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getHeaderViewsCount()I
move-result v0
add-int/2addr v0, v2
if-ge p2, v0, :cond_20
new-instance v1, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper$ViewHolder;
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mHeaderViews:Ljava/util/ArrayList;
sub-int v2, p2, v2
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/view/View;
invoke-direct {v1, v0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper$ViewHolder;-><init>(Landroid/view/View;)V
move-object v0, v1
:goto_1f
return-object v0
:cond_20
if-lt p2, v3, :cond_35
if-ge p2, v1, :cond_35
new-instance v1, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper$ViewHolder;
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mFooterViews:Ljava/util/ArrayList;
sub-int v2, p2, v3
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/view/View;
invoke-direct {v1, v0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper$ViewHolder;-><init>(Landroid/view/View;)V
move-object v0, v1
goto :goto_1f
:cond_35
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
sub-int v1, p2, v1
invoke-virtual {v0, p1, v1}, Landroid/support/v7/widget/RecyclerView$Adapter;->onCreateViewHolder(Landroid/view/ViewGroup;I)Landroid/support/v7/widget/RecyclerView$ViewHolder;
move-result-object v0
goto :goto_1f
.end method
.method public removeFooterView(Landroid/view/View;)V
.registers 3
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mFooterViews:Ljava/util/ArrayList;
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->notifyDataSetChanged()V
return-void
.end method
.method public removeHeaderView(Landroid/view/View;)V
.registers 3
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mHeaderViews:Ljava/util/ArrayList;
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->notifyDataSetChanged()V
return-void
.end method
.method public setAdapter(Landroid/support/v7/widget/RecyclerView$Adapter;)V
.registers 4
if-eqz p1, :cond_f
instance-of v0, p1, Landroid/support/v7/widget/RecyclerView$Adapter;
if-nez v0, :cond_f
new-instance v0, Ljava/lang/RuntimeException;
const-string/jumbo v1, "your adapter must be a RecyclerView.Adapter"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
:cond_f
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
if-eqz v0, :cond_27
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getHeaderViewsCount()I
move-result v0
iget-object v1, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
invoke-virtual {v1}, Landroid/support/v7/widget/RecyclerView$Adapter;->getItemCount()I
move-result v1
invoke-virtual {p0, v0, v1}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->notifyItemRangeRemoved(II)V
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
iget-object v1, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mDataObserver:Landroid/support/v7/widget/RecyclerView$AdapterDataObserver;
invoke-virtual {v0, v1}, Landroid/support/v7/widget/RecyclerView$Adapter;->unregisterAdapterDataObserver(Landroid/support/v7/widget/RecyclerView$AdapterDataObserver;)V
:cond_27
iput-object p1, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
iget-object v0, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
iget-object v1, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mDataObserver:Landroid/support/v7/widget/RecyclerView$AdapterDataObserver;
invoke-virtual {v0, v1}, Landroid/support/v7/widget/RecyclerView$Adapter;->registerAdapterDataObserver(Landroid/support/v7/widget/RecyclerView$AdapterDataObserver;)V
invoke-virtual {p0}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->getHeaderViewsCount()I
move-result v0
iget-object v1, p0, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->mInnerAdapter:Landroid/support/v7/widget/RecyclerView$Adapter;
invoke-virtual {v1}, Landroid/support/v7/widget/RecyclerView$Adapter;->getItemCount()I
move-result v1
invoke-virtual {p0, v0, v1}, Lcom/cmcm/xiaobao/phone/smarthome/widget/HeaderAndFooterWrapper;->notifyItemRangeInserted(II)V
return-void
.end method