49 lines
1.6 KiB
Java
49 lines
1.6 KiB
Java
package androidx.cursoradapter.widget;
|
|
|
|
import android.database.Cursor;
|
|
import android.widget.Filter;
|
|
public class CursorFilter extends Filter {
|
|
public CursorFilterClient mClient;
|
|
|
|
public interface CursorFilterClient {
|
|
void changeCursor(Cursor cursor);
|
|
|
|
CharSequence convertToString(Cursor cursor);
|
|
|
|
Cursor getCursor();
|
|
|
|
Cursor runQueryOnBackgroundThread(CharSequence charSequence);
|
|
}
|
|
|
|
public CursorFilter(CursorFilterClient cursorFilterClient) {
|
|
this.mClient = cursorFilterClient;
|
|
}
|
|
|
|
@Override // android.widget.Filter
|
|
public CharSequence convertResultToString(Object obj) {
|
|
return this.mClient.convertToString((Cursor) obj);
|
|
}
|
|
|
|
@Override // android.widget.Filter
|
|
public Filter.FilterResults performFiltering(CharSequence charSequence) {
|
|
Cursor runQueryOnBackgroundThread = this.mClient.runQueryOnBackgroundThread(charSequence);
|
|
Filter.FilterResults filterResults = new Filter.FilterResults();
|
|
if (runQueryOnBackgroundThread != null) {
|
|
filterResults.count = runQueryOnBackgroundThread.getCount();
|
|
filterResults.values = runQueryOnBackgroundThread;
|
|
} else {
|
|
filterResults.count = 0;
|
|
filterResults.values = null;
|
|
}
|
|
return filterResults;
|
|
}
|
|
|
|
@Override // android.widget.Filter
|
|
public void publishResults(CharSequence charSequence, Filter.FilterResults filterResults) {
|
|
Cursor cursor = this.mClient.getCursor();
|
|
Object obj = filterResults.values;
|
|
if (obj != null && obj != cursor) {
|
|
this.mClient.changeCursor((Cursor) obj);
|
|
}
|
|
}
|
|
}
|