package com.boardgamegeek.ui.adapter; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.BaseColumns; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.widget.SimpleCursorAdapter; import android.text.TextUtils; import com.boardgamegeek.R; /** * A simple adapter to use for {@link android.widget.AutoCompleteTextView}. */ public class AutoCompleteAdapter extends SimpleCursorAdapter { private Context context; private String columnName; private Uri uri; private String sortOrder; public AutoCompleteAdapter(@NonNull Context context, String columnName, Uri uri) { super(context, R.layout.autocomplete_item, null, new String[] { BaseColumns._ID, columnName }, new int[] { 0, R.id.autocomplete_item }, 0); initialize(context, columnName, uri, null); } public AutoCompleteAdapter(@NonNull Context context, String columnName, Uri uri, String sortOrder) { super(context, R.layout.autocomplete_item, null, new String[] { BaseColumns._ID, columnName }, new int[] { 0, R.id.autocomplete_item }, 0); initialize(context, columnName, uri, sortOrder); } private void initialize(Context context, String columnName, Uri uri, String sortOrder) { this.context = context; this.columnName = columnName; this.uri = uri; this.sortOrder = sortOrder; } @Override public int getStringConversionColumn() { return 1; } @Override public CharSequence convertToString(@NonNull Cursor cursor) { return cursor.getString(1); } @Nullable @Override public Cursor runQueryOnBackgroundThread(CharSequence constraint) { String selection = null; String[] selectionArgs = null; if (!TextUtils.isEmpty(constraint)) { selection = columnName + " LIKE ?"; selectionArgs = new String[] { constraint + "%" }; } return context.getContentResolver().query(uri, new String[] { BaseColumns._ID, columnName }, selection, selectionArgs, sortOrder); } }