English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Недавно занимался проектом, где использовал Android Spinner, здесь я кратко опишу пример, чтобы проверить, как его использовать.
Spinner
是一个下拉列表,往安卓界面中拖拽一个Spinner控件,在属性中设置Android:entries=“@array/spinner_data”
其中spinner_data为在string中设置的数组。数组中由固定写好的值。此时便可在界面设置好下拉列表。
<Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="17dp" android:entries="@array/spinner_data"/>
当然为了用户体验好,可以设置 android:spinnerMode="dialog"属性,可以使下拉列表有弹出框。
适配器:
适配器主要负责从数据源中抓取数据,传向各个UI组件。主要的适配器adapter由ArrayAdapter和BaseAdapter。 即适配器负责从某个数据源比如数组中得到数据传向Spinner,显示在界面上。
首先定义数据源
private String[] ss=new String[]{ "猫咪", "老虎", "狮子", };
数据源2
private List<String> list=new ArrayList<String>(); list.add("百度"); list.add("腾讯"); list.add("阿里巴巴");
其次定义一个类Myadapter继承与抽象类BaseAdapter,抽象方法有四个。
private class Myadapter extends BaseAdapter{ @Override public int getCount() { // TODO Автоматически сгенерированный метод stub return ss.length; } @Override public Object getItem(int position) { // TODO Автоматически сгенерированный метод stub return null; } @Override public long getItemId(int position) { // TODO Автоматически сгенерированный метод stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Автоматически сгенерированный метод stub TextView textView=new TextView(MainActivity.this); textView.setText(ss[position]); return textView; }
Затем в głównej funkcji
Spinner spinner=(Spinner) findViewById(R.id.spinner1); BaseAdapter adapter=new Myadapter(); spinner.setAdapter(adapter);
Сначала найдите элемент Spinner и создайте новый адаптер. Через адаптер получите данные из источника данных ss.
Самый важный метод адаптера BaseAdapter - это getcount() и метод getview(). Первый возвращает длину источника данных, а второй выполняет некоторые операции.
Конечно, можно использовать более простой адаптер ArrayAdaper.
Spinner spinner=(Spinner) findViewById(R.id.spinner1); ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,ss); spinner.setAdapter(adapter);
Через эти предложения можно напрямую определить массив ss.
Спасибо за чтение, надеюсь, это поможет вам, спасибо за поддержку нашего сайта!