blob: 4fefb54d8dc73f515fad4e22627c25aa29759584 [file] [log] [blame]
package org.skia.viewer;
import android.content.Context;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import android.widget.Spinner;
import java.util.ArrayList;
import java.util.List;
public class OptionAdapter extends ArrayAdapter<String> {
private String mCurrentOption;
private List<String> mOptions;
private Filter mFilter = null;
private Spinner mSpinner;
public OptionAdapter(Context context, int resource, List<String> options, Spinner spinner) {
super(context, resource);
addAll(options);
mOptions = options;
mSpinner = spinner;
}
public void setCurrentOption(String currentOption) {
this.mCurrentOption = currentOption;
}
private class OptionFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
final String pattern = constraint.toString().toLowerCase();
ArrayList<String> filteredOptions = new ArrayList<>();
for(String option : mOptions) {
if (option.equals(mCurrentOption)
|| option.toLowerCase().indexOf(pattern) > -1) {
filteredOptions.add(option);
}
}
FilterResults results = new FilterResults();
results.values = filteredOptions;
results.count = filteredOptions.size();
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
clear();
List<String> filteredOptions = (List<String>) results.values;
addAll(filteredOptions);
// We set the selection to the current option to avoid unwanted option selection change
mSpinner.setSelection(filteredOptions.indexOf(mCurrentOption));
notifyDataSetChanged();
}
}
@Override
public Filter getFilter() {
if (mFilter == null) {
mFilter = new OptionFilter();
}
return mFilter;
}
}