mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
267 lines
8.6 KiB
Java
267 lines
8.6 KiB
Java
package androidx.cursoradapter.widget;
|
|
|
|
import android.content.Context;
|
|
import android.database.ContentObserver;
|
|
import android.database.Cursor;
|
|
import android.database.DataSetObserver;
|
|
import android.os.Handler;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.BaseAdapter;
|
|
import android.widget.Filter;
|
|
import android.widget.FilterQueryProvider;
|
|
import android.widget.Filterable;
|
|
import androidx.cursoradapter.widget.CursorFilter;
|
|
|
|
/* loaded from: classes.dex */
|
|
public abstract class CursorAdapter extends BaseAdapter implements Filterable, CursorFilter.CursorFilterClient {
|
|
|
|
@Deprecated
|
|
public static final int FLAG_AUTO_REQUERY = 1;
|
|
public static final int FLAG_REGISTER_CONTENT_OBSERVER = 2;
|
|
protected boolean mAutoRequery;
|
|
protected ChangeObserver mChangeObserver;
|
|
protected Context mContext;
|
|
protected Cursor mCursor;
|
|
protected CursorFilter mCursorFilter;
|
|
protected DataSetObserver mDataSetObserver;
|
|
protected boolean mDataValid;
|
|
protected FilterQueryProvider mFilterQueryProvider;
|
|
protected int mRowIDColumn;
|
|
|
|
public abstract void bindView(View view, Context context, Cursor cursor);
|
|
|
|
@Override // androidx.cursoradapter.widget.CursorFilter.CursorFilterClient
|
|
public Cursor getCursor() {
|
|
return this.mCursor;
|
|
}
|
|
|
|
public FilterQueryProvider getFilterQueryProvider() {
|
|
return this.mFilterQueryProvider;
|
|
}
|
|
|
|
@Override // android.widget.BaseAdapter, android.widget.Adapter
|
|
public boolean hasStableIds() {
|
|
return true;
|
|
}
|
|
|
|
public abstract View newView(Context context, Cursor cursor, ViewGroup viewGroup);
|
|
|
|
public void setFilterQueryProvider(FilterQueryProvider filterQueryProvider) {
|
|
this.mFilterQueryProvider = filterQueryProvider;
|
|
}
|
|
|
|
@Deprecated
|
|
public CursorAdapter(Context context, Cursor cursor) {
|
|
init(context, cursor, 1);
|
|
}
|
|
|
|
public CursorAdapter(Context context, Cursor cursor, boolean z) {
|
|
init(context, cursor, z ? 1 : 2);
|
|
}
|
|
|
|
public CursorAdapter(Context context, Cursor cursor, int i) {
|
|
init(context, cursor, i);
|
|
}
|
|
|
|
@Deprecated
|
|
protected void init(Context context, Cursor cursor, boolean z) {
|
|
init(context, cursor, z ? 1 : 2);
|
|
}
|
|
|
|
void init(Context context, Cursor cursor, int i) {
|
|
if ((i & 1) == 1) {
|
|
i |= 2;
|
|
this.mAutoRequery = true;
|
|
} else {
|
|
this.mAutoRequery = false;
|
|
}
|
|
boolean z = cursor != null;
|
|
this.mCursor = cursor;
|
|
this.mDataValid = z;
|
|
this.mContext = context;
|
|
this.mRowIDColumn = z ? cursor.getColumnIndexOrThrow("_id") : -1;
|
|
if ((i & 2) == 2) {
|
|
this.mChangeObserver = new ChangeObserver();
|
|
this.mDataSetObserver = new MyDataSetObserver();
|
|
} else {
|
|
this.mChangeObserver = null;
|
|
this.mDataSetObserver = null;
|
|
}
|
|
if (z) {
|
|
ChangeObserver changeObserver = this.mChangeObserver;
|
|
if (changeObserver != null) {
|
|
cursor.registerContentObserver(changeObserver);
|
|
}
|
|
DataSetObserver dataSetObserver = this.mDataSetObserver;
|
|
if (dataSetObserver != null) {
|
|
cursor.registerDataSetObserver(dataSetObserver);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // android.widget.Adapter
|
|
public int getCount() {
|
|
Cursor cursor;
|
|
if (!this.mDataValid || (cursor = this.mCursor) == null) {
|
|
return 0;
|
|
}
|
|
return cursor.getCount();
|
|
}
|
|
|
|
@Override // android.widget.Adapter
|
|
public Object getItem(int i) {
|
|
Cursor cursor;
|
|
if (!this.mDataValid || (cursor = this.mCursor) == null) {
|
|
return null;
|
|
}
|
|
cursor.moveToPosition(i);
|
|
return this.mCursor;
|
|
}
|
|
|
|
@Override // android.widget.Adapter
|
|
public long getItemId(int i) {
|
|
Cursor cursor;
|
|
if (this.mDataValid && (cursor = this.mCursor) != null && cursor.moveToPosition(i)) {
|
|
return this.mCursor.getLong(this.mRowIDColumn);
|
|
}
|
|
return 0L;
|
|
}
|
|
|
|
@Override // android.widget.Adapter
|
|
public View getView(int i, View view, ViewGroup viewGroup) {
|
|
if (!this.mDataValid) {
|
|
throw new IllegalStateException("this should only be called when the cursor is valid");
|
|
}
|
|
if (!this.mCursor.moveToPosition(i)) {
|
|
throw new IllegalStateException("couldn't move cursor to position " + i);
|
|
}
|
|
if (view == null) {
|
|
view = newView(this.mContext, this.mCursor, viewGroup);
|
|
}
|
|
bindView(view, this.mContext, this.mCursor);
|
|
return view;
|
|
}
|
|
|
|
@Override // android.widget.BaseAdapter, android.widget.SpinnerAdapter
|
|
public View getDropDownView(int i, View view, ViewGroup viewGroup) {
|
|
if (!this.mDataValid) {
|
|
return null;
|
|
}
|
|
this.mCursor.moveToPosition(i);
|
|
if (view == null) {
|
|
view = newDropDownView(this.mContext, this.mCursor, viewGroup);
|
|
}
|
|
bindView(view, this.mContext, this.mCursor);
|
|
return view;
|
|
}
|
|
|
|
public View newDropDownView(Context context, Cursor cursor, ViewGroup viewGroup) {
|
|
return newView(context, cursor, viewGroup);
|
|
}
|
|
|
|
public void changeCursor(Cursor cursor) {
|
|
Cursor swapCursor = swapCursor(cursor);
|
|
if (swapCursor != null) {
|
|
swapCursor.close();
|
|
}
|
|
}
|
|
|
|
public Cursor swapCursor(Cursor cursor) {
|
|
Cursor cursor2 = this.mCursor;
|
|
if (cursor == cursor2) {
|
|
return null;
|
|
}
|
|
if (cursor2 != null) {
|
|
ChangeObserver changeObserver = this.mChangeObserver;
|
|
if (changeObserver != null) {
|
|
cursor2.unregisterContentObserver(changeObserver);
|
|
}
|
|
DataSetObserver dataSetObserver = this.mDataSetObserver;
|
|
if (dataSetObserver != null) {
|
|
cursor2.unregisterDataSetObserver(dataSetObserver);
|
|
}
|
|
}
|
|
this.mCursor = cursor;
|
|
if (cursor != null) {
|
|
ChangeObserver changeObserver2 = this.mChangeObserver;
|
|
if (changeObserver2 != null) {
|
|
cursor.registerContentObserver(changeObserver2);
|
|
}
|
|
DataSetObserver dataSetObserver2 = this.mDataSetObserver;
|
|
if (dataSetObserver2 != null) {
|
|
cursor.registerDataSetObserver(dataSetObserver2);
|
|
}
|
|
this.mRowIDColumn = cursor.getColumnIndexOrThrow("_id");
|
|
this.mDataValid = true;
|
|
notifyDataSetChanged();
|
|
} else {
|
|
this.mRowIDColumn = -1;
|
|
this.mDataValid = false;
|
|
notifyDataSetInvalidated();
|
|
}
|
|
return cursor2;
|
|
}
|
|
|
|
public CharSequence convertToString(Cursor cursor) {
|
|
return cursor == null ? "" : cursor.toString();
|
|
}
|
|
|
|
public Cursor runQueryOnBackgroundThread(CharSequence charSequence) {
|
|
FilterQueryProvider filterQueryProvider = this.mFilterQueryProvider;
|
|
return filterQueryProvider != null ? filterQueryProvider.runQuery(charSequence) : this.mCursor;
|
|
}
|
|
|
|
@Override // android.widget.Filterable
|
|
public Filter getFilter() {
|
|
if (this.mCursorFilter == null) {
|
|
this.mCursorFilter = new CursorFilter(this);
|
|
}
|
|
return this.mCursorFilter;
|
|
}
|
|
|
|
protected void onContentChanged() {
|
|
Cursor cursor;
|
|
if (!this.mAutoRequery || (cursor = this.mCursor) == null || cursor.isClosed()) {
|
|
return;
|
|
}
|
|
this.mDataValid = this.mCursor.requery();
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
/* loaded from: classes.dex */
|
|
public class ChangeObserver extends ContentObserver {
|
|
@Override // android.database.ContentObserver
|
|
public boolean deliverSelfNotifications() {
|
|
return true;
|
|
}
|
|
|
|
ChangeObserver() {
|
|
super(new Handler());
|
|
}
|
|
|
|
@Override // android.database.ContentObserver
|
|
public void onChange(boolean z) {
|
|
CursorAdapter.this.onContentChanged();
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
/* loaded from: classes.dex */
|
|
public class MyDataSetObserver extends DataSetObserver {
|
|
MyDataSetObserver() {
|
|
}
|
|
|
|
@Override // android.database.DataSetObserver
|
|
public void onChanged() {
|
|
CursorAdapter.this.mDataValid = true;
|
|
CursorAdapter.this.notifyDataSetChanged();
|
|
}
|
|
|
|
@Override // android.database.DataSetObserver
|
|
public void onInvalidated() {
|
|
CursorAdapter.this.mDataValid = false;
|
|
CursorAdapter.this.notifyDataSetInvalidated();
|
|
}
|
|
}
|
|
}
|