2015-11-05 2 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

Что такое содержимое адаптера1? –

+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) вместо каждого элемента

EDIT :Чтобы установить определенный элемент по умолчанию

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

EDIT 2: В связи с вопросом (https://github.com/Lesilva/BetterSpinner/issues/13) также указанный Хорхе Casariego, используйте SetText, но если вы знаете, что строка в блесны вы можете улучшить свой код с использованием только

spinner.setText(string) 
+0

С этим спиннер заселяется. Но при запуске приложения мне нужно установить элемент «Spinner» в «Item3». – user1382802

+0

Посмотрите на редактирование;) – fattidare

+0

По-прежнему та же ошибка. – user1382802

Смежные вопросы