Android-Multiple Spinners

У меня есть этот код:

package lijap.app.starcraft2counters; import java.io.File; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class Settings extends Activity implements OnItemSelectedListener { Spinner answertime; Spinner gametime; Spinner missesallowed; String[] answerseconds = { "Unlimited", "1 second", "2 seconds", "3 seconds", "4 seconds", " 5 seconds" }; String[] gameminutes = { "Unlimited", "1 minute", "2 minutes", "3 minutes", "4 minutes", " 5 minutes" }; String[] numberofmisses = { "Unlimited", "5", "10", "15", "20", "25" }; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.settings); ArrayAdapter<String> adapter = new ArrayAdapter<String>(Settings.this, android.R.layout.simple_spinner_item, gameminutes); answertime = (Spinner) findViewById(R.id.s_answertime); answertime.setAdapter(adapter); answertime.setOnItemSelectedListener(this); } @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } } 

Я запутался, пытаясь вставить более одного счетчика. Разделяю ли я адаптер массива, или я создаю новый для каждого? Как насчет onItemSelected? Как вы можете видеть из моих строк наверху, мне нужны три прядильщика. Как мне это сделать?

Я новичок в андроиде, как вы можете сказать. Вся помощь приветствуется – Lijap

Вы можете делиться адаптером между различными Spinner s, если они адаптируют одну и ту же информацию. Очевидно, что каждый из ваших адаптеров должен адаптировать другой набор String s, поэтому вам нужно создать ArrayAdapter для каждого Spinner .

Один OnItemSelectedListener будет работать для 3 Spinners (если вы их установили). Вы можете вызвать getId() в AdapterView<?> как аргумент, чтобы узнать, какой Spinner поднял событие.

 public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { switch(arg0.getId()){ case R.id.s_answertime: break; case ... } } 

Проверьте этот

 yearDropdown.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { selectedyear = parentView.getSelectedItemPosition(); drpyear = yearDropdown.getSelectedItem().toString(); //your code here } public void onNothingSelected(AdapterView<?> parentView) { selectedyear = 0; //return; } }); monthDropdown.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { //your code here } public void onNothingSelected(AdapterView<?> parentView) { selectedmonth = 0; //return; } }); dayDropdown.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { //your code here } public void onNothingSelected(AdapterView<?> parentView) { selectedday = 0; } }); 

Вам нужно создать каждый адаптер для каждого счетчика.

  adapterYear = new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item); yearDropdown.setAdapter(adapterYear); adapterMonth = new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item); monthDropdown.setAdapter(adapterMonth); adapterDays = new ArrayAdapter<CharSequence>(this,android.R.layout.simple_spinner_item); dayDropdown.setAdapter(adapterDays);