2011-07-21 3 views
-2

Смогу ли я прийти на небеса или в ад? Как я должен был заселить 5 прядильщиков, я пробовал очень компактный код. Я не понимал, почему я должен использовать ArrayAdapter, поэтому я просто отказался от него, несмотря на то, что все учебники используют его. Я работал над ним, как сработал. Код показывает только одну вертушку:My Android spinner работает без ArrayAdapter ... почему?

Spinner s2_height = (Spinner)findViewById(R.id.s2_height); 
    s2_height.setOnItemSelectedListener(new OnItemSelectedListener() { //Register a callback to be invoked when an item in this AdapterView has been selected. 
     public void onItemSelected(AdapterView<?> arg0, View arg1, //Callback method to be invoked when an item in this view has been selected 
       int arg2, long arg3) { 
      myCalc();} 
     public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 

     } 
}); 

Это место в моем .java, где я выпавшего раздел ArrayAdapter, нормально быть в учебники, как Рекомендуемые нами:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
      this, R.array.Height_array_id, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    s2_height.setAdapter(adapter); 

И удивительно, что это я поместил метод myCalc, который правильно отображает ItemPosition на всех 5 spinners. Теперь я боюсь, что у меня будет какой-то недостаток в другом месте, возможно, при изменении цветов или высоте текста. У кого-то такая же проблема?

+1

Я думаю, что это работает, вероятно, потому, что вы назначаете записи (android: entries) в макете xml, так просто. – Ishaan

ответ

6

Я приду на небеса или в ад?

Это был бы вопрос для вашего священника, министра, раввина и т. Д. Это не вопрос для StackOverflow.

Я didn't понимаю, почему я должен использовать ArrayAdapter, так что я просто бросил его

Вы не должны использовать ArrayAdapter, но вы должны использовать некоторые формы SpinnerAdapter для заполнения Spinner через setAdapter(). В противном случае Spinner будет пустым. Если ваш Spinner не пуст, это означает, что вы на нем набрали setAdapter().

+0

Я экспериментировал с вставкой 4 строк стандартного кода ArrayAdapter и удалением его снова. Оба работали одинаково. У меня определенно нет setAdapter() ahywhere. Может ли быть так, что новейший SDK предоставляет его в setOnItemSelectedListener автоматически (скрыто), если он явно не закодирован? – PedroJebeto

+0

@PedroJebeto: «У меня определенно нет setAdapter() ahywhere». - тогда ваш 'Spinner' пуст или вы забыли перекомпилировать/переустановить приложение после внесения изменений в код. – CommonsWare

+0

Spinner в Android - это как замок с 7 замками. Вы можете видеть, как много похожих faq'ов здесь отправлено, что-то не так в системе. Вы не можете легко изменить внешний вид, цвет, размер, ничто. И это самый основной камень каждого приложения. Спасибо за помощь! – PedroJebeto