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

Spiegazione dettagliata di Android Spinner e del modello di adattatore con esempi di codice

Recentemente ho lavorato su un progetto che utilizza Android Spinner, ecco un piccolo esempio per illustrare come utilizzarlo.

Spinner

È una lista a discesa, trascinare un controllo Spinner nell'interfaccia Android e impostare l'attributo Android:entries=“@array/spinner_data”
Dove spinner_data è un array definito in string. L'array contiene valori prefissati. A questo punto è possibile configurare la lista a discesa nell'interfaccia.

<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"/> 

Naturalmente, per migliorare l'esperienza utente, è possibile impostare l'attributo android:spinnerMode="dialog" per rendere la lista a discesa con una finestra弹出框.

Adattatore:

L'adattatore è responsabile di estrarre i dati dalla sorgente dati e trasmetterli a vari componenti UI. Gli adapter principali sono ArrayAdapter e BaseAdapter. Gli adapter sono responsabili di ottenere dati da una sorgente dati come un array e trasmetterli a un Spinner per visualizzarli nell'interfaccia utente.

Prima definire la sorgente dati

private String[] ss=new String[]{ 
    "Gatto", 
    "Tigre", 
    "Lupo", 
  }; 

Sorgente dati 2

private List<String> list=new ArrayList<String>(); 
list.add("百度"); 
    list.add("腾讯"); 
    list.add("阿里巴巴"); 

Altra definizione di una classe Myadapter che eredita dall'astratto BaseAdapter, con quattro metodi astratti.

private class Myadapter extends BaseAdapter{ 
  @Override 
  public int getCount() { 
    // TODO Auto-generated method stub 
    return ss.length; 
  } 
  @Override 
  public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return null; 
  } 
  @Override 
  public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
  } 
  @Override 
  public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    TextView textView = new TextView(MainActivity.this); 
    textView.setText(ss[position]); 
    return textView; 
  } 

Poi nel main function

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

Prima trovare il controllo Spinner e istanziare un nuovo adapter. Attraverso l'adattatore adapter catturare i dati dalla sorgente dati ss.

Il metodo più importante dell'adattatore BaseAdapter è getcount() e il metodo getview(). Il primo restituisce la lunghezza della sorgente dati, il secondo esegue alcune operazioni.

Naturalmente, è possibile utilizzare un adattatore ArrayAdaper più semplice.

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

Tramite queste istruzioni, è possibile localizzare direttamente nell'array ss.

Grazie per aver letto, spero che possa aiutarvi, grazie per il supporto al nostro sito!

Ti potrebbe interessare