我有:
我想将Spinner设置为变量(cat)中的值。什么是最优雅的解决方案?我想过通过循环运行字符串并将项目与变量进行比较(直到我在这个例子中点击了cat),然后使用该迭代的#来设置Spinner的选择,但这看起来很复杂。
或者我应该抛弃旋转器?我环顾四周,找到了一个使用按钮和对话框字段的解决方案:https://stackoverflow.com/a/5790662/1928813
//编辑:我当前的代码。如果可能的话,我想使用“牛”而不必经过循环!
final Spinner bSpinner = (Spinner) findViewById(R.id.spinner1);
String[] animals = new String[] { "cat", "bird", "cow", "dog" };
String animal = "cow";
int spinnerpos;
final ArrayAdapter<String> animaladapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, animals);
animaladapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
bSpinner.setAdapter(animaladapter);
for (Integer j = 0; j < animals.length; j++) {
if (animals[j].equals(animal)) {
spinnerpos = j;
bSpinner.setSelection(spinnerpos);
} else {
};
}
答案 0 :(得分:0)
(暂时)将您的String数组转换为List
,以便您可以使用indexOf
。
int position = Arrays.asList(array).indexOf(randomVariable);
spinner.setSelection(position);
修改强>
我现在明白你的问题。如果String数组包含所有唯一值,则可以将它们放在HashMap中进行O(1)检索:
HashMap<String, Integer> map = new HashMap<String, Integer>();
for (int i = 0; i < animals.length; i++) {
map.put(animals[i], i);
}
String randomAnimal = "cow";
Integer position = map.get(randomAnimal);
if (position != null) bSpinner.setSelection(position);