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); } } }