Рассмотрим следующий код, который представляет собой простой способ определения счетчика с данными из массива, поддерживающего его функцию:
public class HelloAndroid extends Activity implements AdapterView.OnItemSelectedListener {
Spinner myspinner;
ArrayAdapter<String> myadapter;
final String[] sample_data={"Sankar", "Sunita", "Hari", "Susha", "Lovely"};
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
myspinner=(Spinner)findViewById(R.id.myspinner);
myadapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,sample_data);
myadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
myspinner.setOnItemSelectedListener(this);
myspinner.setAdapter(myadapter);
}
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Toast.makeText(this, myadapter.getItem(arg2), Toast.LENGTH_SHORT).show();
}
public void onNothingSelected(AdapterView<?> arg0) {
Toast.makeText(this, "Nothing Selected", Toast.LENGTH_SHORT).show();
}
}
Я хочу сказать, что для реализации счетчика мне нужно использовать ArrayAdapter. Разве я не могу связать Spinner напрямую с реализацией SpinnerAdapter? SpinnerAdapter не имеет метода setDropDownViewResource, такого как ArrayAdapter, так как бы нам установить ресурс раскрывающегося представления, который должен отображаться на счетчике? Я запутался в том, как SpinnerAdapter выполняет свои функции адаптера для Spinner, когда он не может предоставить два вида (поле и раскрывающийся список), которые требуются для Spinner?
Любая помощь приветствуется.