discord-jadx/app/src/main/java/androidx/recyclerview/widget/TileList.java

81 lines
2.2 KiB
Java

package androidx.recyclerview.widget;
import android.util.SparseArray;
import java.lang.reflect.Array;
public class TileList<T> {
public Tile<T> mLastAccessedTile;
public final int mTileSize;
private final SparseArray<Tile<T>> mTiles = new SparseArray<>(10);
public static class Tile<T> {
public int mItemCount;
public final T[] mItems;
public Tile<T> mNext;
public int mStartPosition;
public Tile(Class<T> cls, int i) {
this.mItems = (T[]) ((Object[]) Array.newInstance((Class<?>) cls, i));
}
public boolean containsPosition(int i) {
int i2 = this.mStartPosition;
return i2 <= i && i < i2 + this.mItemCount;
}
public T getByPosition(int i) {
return this.mItems[i - this.mStartPosition];
}
}
public TileList(int i) {
this.mTileSize = i;
}
public Tile<T> addOrReplace(Tile<T> tile) {
int indexOfKey = this.mTiles.indexOfKey(tile.mStartPosition);
if (indexOfKey < 0) {
this.mTiles.put(tile.mStartPosition, tile);
return null;
}
Tile<T> valueAt = this.mTiles.valueAt(indexOfKey);
this.mTiles.setValueAt(indexOfKey, tile);
if (this.mLastAccessedTile == valueAt) {
this.mLastAccessedTile = tile;
}
return valueAt;
}
public void clear() {
this.mTiles.clear();
}
public Tile<T> getAtIndex(int i) {
return this.mTiles.valueAt(i);
}
public T getItemAt(int i) {
Tile<T> tile = this.mLastAccessedTile;
if (tile == null || !tile.containsPosition(i)) {
int indexOfKey = this.mTiles.indexOfKey(i - (i % this.mTileSize));
if (indexOfKey < 0) {
return null;
}
this.mLastAccessedTile = this.mTiles.valueAt(indexOfKey);
}
return this.mLastAccessedTile.getByPosition(i);
}
public Tile<T> removeAtPos(int i) {
Tile<T> tile = this.mTiles.get(i);
if (this.mLastAccessedTile == tile) {
this.mLastAccessedTile = null;
}
this.mTiles.delete(i);
return tile;
}
public int size() {
return this.mTiles.size();
}
}