2015-11-05 97 views
1

我爲微調器使用了MaterialBetterSpinner庫,但無法設置到指定的位置。在android中設置微調器位置

String[] LIST = {"Item1", "Item2", "Item3", "Item4", "Item5"}; 

MaterialBetterSpinner spinnerItem = (MaterialBetterSpinner) findViewById(R.id.spinnerItem); 

ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, LIST); 

String str = "Item3"; 
for(int i=0; i < adapter1.getCount(); i++) { 
    if(str.trim().equals(adapter1.getItem(i).toString())){ 
     spinnerItem.setSelection(i); 
     break; 
    } 
} 

我得到下面的異常

Caused by: java.lang.IndexOutOfBoundsException: setSpan (1 ... 1) ends beyond length 0 
+0

adapter1的內容是什麼? –

+0

這是一個錯字。 – user1382802

+0

您是否嘗試默認選擇「Item3」? –

回答

3

根據該issue該溶液是用的getText()

所以,你可以有默認值這樣做

 String[] LIST = {"Item1", "Item2", "Item3", "Item4", "Item5"}; 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_dropdown_item_1line, LIST); 

     spinner1.setAdapter(adapter); 
     spinner2.setAdapter(adapter); 


     String str = "Item3"; 
     for(int i=0; i < adapter.getCount(); i++) { 
      if(str.trim().equals(adapter.getItem(i).toString())){ 
       spinner2.setText(adapter.getItem(i).toString()); 
       break; 
      } 
     } 
+0

花了3個小時後,我找到了答案。非常感謝! :d –

1

這是Android開發者

Spinner spinner = (Spinner) findViewById(R.id.spinner); 
// Create an ArrayAdapter using the string array and a default spinner layout 
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
     R.array.planets_array, android.R.layout.simple_spinner_item); 
// Specify the layout to use when the list of choices appears 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
// Apply the adapter to the spinner 
spinner.setAdapter(adapter); 

創建你的適配器後只調用spinner.setAdapter(adapter)而不是每個項目

編輯: 要設置一個特定的項目爲默認

String string = 'my string'; 
int spinnerPosition = adapter.getPosition(string); 
spinner.setSelection(spinnerPosition); 

編輯2: 由於問題(https://github.com/Lesilva/BetterSpinner/issues/13)也由豪爾赫Casariego,使用的setText規定,但如果你知道該字符串是可以提高他的代碼微調僅使用

spinner.setText(string) 
+0

隨着這個微調器越來越人口。但是我需要在應用程序啓動時將微調項目設置爲「Item3」。 – user1382802

+0

看看編輯;) – fattidare

+0

仍然是一樣的錯誤。 – user1382802