2014-03-13 32 views
0

我:使用一個變量來切換到某個微調項

  • 具有未知長度的字符串數組,與未知的物品填充(比方說,魚,鳥,貓)
  • 的ArrayAdapter和微調顯示的項目
  • 包含從字符串數組一個未知項變量(比方說貓)

我想將微調器設置爲從變量(貓)的值。什麼是最優雅的解決方案?我想過通過一個循環來運行字符串,並將這些項目與變量進行比較(直到我在這個例子中命中了貓),然後使用該迭代的#來設置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

(暫時)的字符串數組轉換成List所以你可以使用indexOf

int position = Arrays.asList(array).indexOf(randomVariable); 
spinner.setSelection(position); 

編輯:

現在我明白你的問題。如果你的String數組包含所有唯一值,你可以把它們放在了O(1)檢索一個HashMap:

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); 
+0

這不是真的是我所要求的。我加了我的代碼,應該澄清了一點我猜。 –

+0

更新了我的答案。 – Makario

+0

太好了。謝謝! 「位置」必須被定義爲整數(而不是整數),以防其他人使用它並得到錯誤:) –

相關問題