English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Explicación detallada de Android Spinner y el patrón de adaptador con código de ejemplo

Recientemente, al trabajar en proyectos, utilicé Spinner de Android, aquí escribo un pequeño ejemplo para probar cómo se utiliza.

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</span>() { 
    // TODO Auto-metodo de stub generado 
    return ss.length; 
  } 
  @Override 
  public Object getItem(int position) { 
    // TODO Auto-metodo de stub generado 
    return null; 
  } 
  @Override 
  public long getItemId(int position) { 
    // TODO Auto-metodo de stub generado 
    return 0; 
  } 
  @Override 
  public View getView</span>(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-metodo de stub generado 
    TextView textView = new TextView(MainActivity.this); 
    textView.setText(ss[position]); 
    return textView; 
  } 

Luego, en la función principal

Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
    BaseAdapter adapter = new Myadapter(); 
    spinner.setAdapter(adapter); 

Primero, encontrar el controlador Spinner y crear una instancia de new un adaptador. A través del adaptador se capturan los datos de la fuente de datos ss.

El método más importante del adaptador BaseAdapter es getcount() y el método getview(). El primero devuelve la longitud de la fuente de datos, y el segundo realiza algunas operaciones.

Por supuesto, se puede usar un adaptador ArrayAdaper más simple.

Spinner spinner = (Spinner) findViewById(R.id.spinner1); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ss); 
    spinner.setAdapter(adapter); 

A través de las siguientes sentencias, se puede localizar directamente en el array ss.

Gracias por leer, espero que pueda ayudar a todos, gracias por el apoyo a nuestro sitio!

Te gustará