Index: platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java |
diff --git a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java |
index 5ee68efc3c672003f9ff271b8b671a5b932b5449..ba5407984b8864a5c93145cd3c098a6ff2bc1ebf 100644 |
--- a/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java |
+++ b/platform_tools/android/apps/viewer/src/main/java/org/skia/viewer/StateAdapter.java |
@@ -1,12 +1,14 @@ |
package org.skia.viewer; |
+import android.text.Editable; |
+import android.text.TextWatcher; |
import android.view.LayoutInflater; |
import android.view.SurfaceView; |
import android.view.View; |
import android.view.ViewGroup; |
import android.widget.AdapterView; |
-import android.widget.ArrayAdapter; |
import android.widget.BaseAdapter; |
+import android.widget.EditText; |
import android.widget.LinearLayout; |
import android.widget.Spinner; |
import android.widget.TextView; |
@@ -32,6 +34,7 @@ public class StateAdapter extends BaseAdapter implements AdapterView.OnItemSelec |
static final String VALUE = "value"; |
static final String OPTIONS = "options"; |
private static final String BACKEND_STATE_NAME = "Backend"; |
+ private static final int FILTER_LENGTH = 20; |
ViewerActivity mViewerActivity; |
LinearLayout mLayout; |
@@ -86,7 +89,7 @@ public class StateAdapter extends BaseAdapter implements AdapterView.OnItemSelec |
} |
private View inflateItemView(JSONObject item) throws JSONException { |
- View itemView = LayoutInflater.from(mViewerActivity).inflate(R.layout.state_item, null); |
+ LinearLayout itemView = (LinearLayout) LayoutInflater.from(mViewerActivity).inflate(R.layout.state_item, null); |
TextView nameText = (TextView) itemView.findViewById(R.id.nameText); |
TextView valueText = (TextView) itemView.findViewById(R.id.valueText); |
Spinner optionSpinner = (Spinner) itemView.findViewById(R.id.optionSpinner); |
@@ -97,15 +100,31 @@ public class StateAdapter extends BaseAdapter implements AdapterView.OnItemSelec |
valueText.setText(value); |
valueText.setVisibility(View.VISIBLE); |
optionSpinner.setVisibility(View.GONE); |
- |
} else { |
ArrayList<String> optionList = new ArrayList<>(); |
String[] optionStrings = new String[options.length()]; |
for (int j = 0; j < options.length(); j++) { |
optionList.add(options.getString(j)); |
} |
- optionSpinner.setAdapter(new ArrayAdapter<String>(mViewerActivity, |
- android.R.layout.simple_spinner_dropdown_item, optionList)); |
+ final OptionAdapter adapter = new OptionAdapter(mViewerActivity, |
+ android.R.layout.simple_spinner_dropdown_item, optionList, optionSpinner); |
+ adapter.setCurrentOption(value); |
+ optionSpinner.setAdapter(adapter); |
+ if (optionStrings.length >= FILTER_LENGTH) { |
+ EditText filterText = new EditText(mViewerActivity); |
+ filterText.setHint("Filter"); |
+ itemView.addView(filterText, 1); |
+ filterText.addTextChangedListener(new TextWatcher() { |
+ @Override |
+ public void beforeTextChanged(CharSequence s, int start, int cnt, int after) {} |
+ @Override |
+ public void onTextChanged(CharSequence s, int start, int before, int cnt) {} |
+ @Override |
+ public void afterTextChanged(Editable s) { |
+ adapter.getFilter().filter(s.toString()); |
+ } |
+ }); |
+ } |
optionSpinner.setSelection(optionList.indexOf(value)); |
optionSpinner.setOnItemSelectedListener(this); |
optionSpinner.setVisibility(View.VISIBLE); |