1 package org.skia.viewer;
3 import android.content.Context;
4 import android.widget.ArrayAdapter;
5 import android.widget.Filter;
6 import android.widget.Spinner;
8 import java.util.ArrayList;
11 public class OptionAdapter extends ArrayAdapter<String> {
12 private String mCurrentOption;
13 private List<String> mOptions;
14 private Filter mFilter = null;
15 private Spinner mSpinner;
17 public OptionAdapter(Context context, int resource, List<String> options, Spinner spinner) {
18 super(context, resource);
24 public void setCurrentOption(String currentOption) {
25 this.mCurrentOption = currentOption;
28 private class OptionFilter extends Filter {
31 protected FilterResults performFiltering(CharSequence constraint) {
32 final String pattern = constraint.toString().toLowerCase();
33 ArrayList<String> filteredOptions = new ArrayList<>();
34 for(String option : mOptions) {
35 if (option.equals(mCurrentOption)
36 || option.toLowerCase().indexOf(pattern) > -1) {
37 filteredOptions.add(option);
40 FilterResults results = new FilterResults();
41 results.values = filteredOptions;
42 results.count = filteredOptions.size();
47 protected void publishResults(CharSequence constraint, FilterResults results) {
49 List<String> filteredOptions = (List<String>) results.values;
50 addAll(filteredOptions);
51 // We set the selection to the current option to avoid unwanted option selection change
52 mSpinner.setSelection(filteredOptions.indexOf(mCurrentOption));
53 notifyDataSetChanged();
58 public Filter getFilter() {
59 if (mFilter == null) {
60 mFilter = new OptionFilter();