- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
180 lines
7.0 KiB
Java
180 lines
7.0 KiB
Java
package androidx.recyclerview.widget;
|
|
|
|
import android.view.ViewGroup;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
|
|
/* loaded from: classes.dex */
|
|
public final class ConcatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
|
static final String TAG = "ConcatAdapter";
|
|
private final ConcatAdapterController mController;
|
|
|
|
@SafeVarargs
|
|
public ConcatAdapter(@NonNull RecyclerView.Adapter<? extends RecyclerView.ViewHolder>... adapterArr) {
|
|
this(Config.DEFAULT, adapterArr);
|
|
}
|
|
|
|
@SafeVarargs
|
|
public ConcatAdapter(@NonNull Config config, @NonNull RecyclerView.Adapter<? extends RecyclerView.ViewHolder>... adapterArr) {
|
|
this(config, (List<? extends RecyclerView.Adapter<? extends RecyclerView.ViewHolder>>) Arrays.asList(adapterArr));
|
|
}
|
|
|
|
public ConcatAdapter(@NonNull List<? extends RecyclerView.Adapter<? extends RecyclerView.ViewHolder>> list) {
|
|
this(Config.DEFAULT, list);
|
|
}
|
|
|
|
public ConcatAdapter(@NonNull Config config, @NonNull List<? extends RecyclerView.Adapter<? extends RecyclerView.ViewHolder>> list) {
|
|
this.mController = new ConcatAdapterController(this, config);
|
|
Iterator<? extends RecyclerView.Adapter<? extends RecyclerView.ViewHolder>> it = list.iterator();
|
|
while (it.hasNext()) {
|
|
addAdapter(it.next());
|
|
}
|
|
super.setHasStableIds(this.mController.hasStableIds());
|
|
}
|
|
|
|
public boolean addAdapter(@NonNull RecyclerView.Adapter<? extends RecyclerView.ViewHolder> adapter) {
|
|
return this.mController.addAdapter(adapter);
|
|
}
|
|
|
|
public boolean addAdapter(int i, @NonNull RecyclerView.Adapter<? extends RecyclerView.ViewHolder> adapter) {
|
|
return this.mController.addAdapter(i, adapter);
|
|
}
|
|
|
|
public boolean removeAdapter(@NonNull RecyclerView.Adapter<? extends RecyclerView.ViewHolder> adapter) {
|
|
return this.mController.removeAdapter(adapter);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public int getItemViewType(int i) {
|
|
return this.mController.getItemViewType(i);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
@NonNull
|
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
|
|
return this.mController.onCreateViewHolder(viewGroup, i);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
|
|
this.mController.onBindViewHolder(viewHolder, i);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public void setHasStableIds(boolean z) {
|
|
throw new UnsupportedOperationException("Calling setHasStableIds is not allowed on the ConcatAdapter. Use the Config object passed in the constructor to control this behavior");
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public void setStateRestorationPolicy(@NonNull RecyclerView.Adapter.StateRestorationPolicy stateRestorationPolicy) {
|
|
throw new UnsupportedOperationException("Calling setStateRestorationPolicy is not allowed on the ConcatAdapter. This value is inferred from added adapters");
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public long getItemId(int i) {
|
|
return this.mController.getItemId(i);
|
|
}
|
|
|
|
public void internalSetStateRestorationPolicy(@NonNull RecyclerView.Adapter.StateRestorationPolicy stateRestorationPolicy) {
|
|
super.setStateRestorationPolicy(stateRestorationPolicy);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public int getItemCount() {
|
|
return this.mController.getTotalCount();
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public boolean onFailedToRecycleView(@NonNull RecyclerView.ViewHolder viewHolder) {
|
|
return this.mController.onFailedToRecycleView(viewHolder);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public void onViewAttachedToWindow(@NonNull RecyclerView.ViewHolder viewHolder) {
|
|
this.mController.onViewAttachedToWindow(viewHolder);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public void onViewDetachedFromWindow(@NonNull RecyclerView.ViewHolder viewHolder) {
|
|
this.mController.onViewDetachedFromWindow(viewHolder);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public void onViewRecycled(@NonNull RecyclerView.ViewHolder viewHolder) {
|
|
this.mController.onViewRecycled(viewHolder);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
|
|
this.mController.onAttachedToRecyclerView(recyclerView);
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) {
|
|
this.mController.onDetachedFromRecyclerView(recyclerView);
|
|
}
|
|
|
|
@NonNull
|
|
public List<? extends RecyclerView.Adapter<? extends RecyclerView.ViewHolder>> getAdapters() {
|
|
return Collections.unmodifiableList(this.mController.getCopyOfAdapters());
|
|
}
|
|
|
|
@Override // androidx.recyclerview.widget.RecyclerView.Adapter
|
|
public int findRelativeAdapterPositionIn(@NonNull RecyclerView.Adapter<? extends RecyclerView.ViewHolder> adapter, @NonNull RecyclerView.ViewHolder viewHolder, int i) {
|
|
return this.mController.getLocalAdapterPosition(adapter, viewHolder, i);
|
|
}
|
|
|
|
public static final class Config {
|
|
|
|
@NonNull
|
|
public static final Config DEFAULT = new Config(true, StableIdMode.NO_STABLE_IDS);
|
|
public final boolean isolateViewTypes;
|
|
|
|
@NonNull
|
|
public final StableIdMode stableIdMode;
|
|
|
|
public enum StableIdMode {
|
|
NO_STABLE_IDS,
|
|
ISOLATED_STABLE_IDS,
|
|
SHARED_STABLE_IDS
|
|
}
|
|
|
|
public Config(boolean z, @NonNull StableIdMode stableIdMode) {
|
|
this.isolateViewTypes = z;
|
|
this.stableIdMode = stableIdMode;
|
|
}
|
|
|
|
public static final class Builder {
|
|
private boolean mIsolateViewTypes;
|
|
private StableIdMode mStableIdMode;
|
|
|
|
@NonNull
|
|
public Builder setIsolateViewTypes(boolean z) {
|
|
this.mIsolateViewTypes = z;
|
|
return this;
|
|
}
|
|
|
|
@NonNull
|
|
public Builder setStableIdMode(@NonNull StableIdMode stableIdMode) {
|
|
this.mStableIdMode = stableIdMode;
|
|
return this;
|
|
}
|
|
|
|
public Builder() {
|
|
Config config = Config.DEFAULT;
|
|
this.mIsolateViewTypes = config.isolateViewTypes;
|
|
this.mStableIdMode = config.stableIdMode;
|
|
}
|
|
|
|
@NonNull
|
|
public Config build() {
|
|
return new Config(this.mIsolateViewTypes, this.mStableIdMode);
|
|
}
|
|
}
|
|
}
|
|
}
|