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

Explicação detalhada e exemplo de código do Android Spinner e do padrão de adaptador

Recentemente, ao trabalhar em projetos de Android Spinner, escrevi um pequeno exemplo para testar como usá-lo.

Spinner

é uma lista desdobrável. Arraste um controle Spinner para a interface do Android e configure a propriedade Android:entries=“@array/spinner_data”
Dentro disso, spinner_data é um array definido no arquivo string. O array contém valores pré-definidos. Neste ponto, você pode configurar a lista desdobrável na interface.

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

Claro, para melhorar a experiência do usuário, você pode definir a propriedade android:spinnerMode="dialog" para que a lista desdobrável apareça como uma janela popup.

Adaptador:

O adaptador é responsável por capturar dados da fonte de dados e transmiti-los para vários componentes UI. O adaptador principal é o ArrayAdapter e o BaseAdapter. O adaptador é responsável por obter dados de uma fonte de dados, como um array, e transmiti-los para o Spinner, exibindo-os na interface do usuário.

Primeiro, defina a fonte de dados

private String[] ss=new String[]{ 
    "Gato", 
    "Tigre", 
    "Leão", 
  }; 

Fonte de dados2

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

Em seguida, defina uma classe Myadapter que herda da classe abstrata BaseAdapter, com quatro métodos abstratos.

private class Myadapter extends BaseAdapter{ 
  @Override 
  public int getCount</span>() { 
    // TODO Auto-esquema de método gerado 
    return ss.length; 
  } 
  @Override 
  public Object getItem(int position) { 
    // TODO Auto-esquema de método gerado 
    return null; 
  } 
  @Override 
  public long getItemId(int position) { 
    // TODO Auto-esquema de método gerado 
    return 0; 
  } 
  @Override 
  public View getView</span>(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-esquema de método gerado 
    TextView textView = new TextView(MainActivity.this); 
    textView.setText(ss[position]); 
    return textView; 
  } 

E depois na função principal

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

Primeiro, encontre o controle Spinner e crie uma instância new de um adaptador. Através do adaptador, capture os dados da fonte de dados ss.

O método mais importante do adaptador BaseAdapter é getcount() e o método getview(). O primeiro retorna o comprimento da fonte de dados, e o segundo realiza algumas operações.

Claro que você pode usar o adaptador ArrayAdaper mais simples.

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

Através das seguintes frases, você pode localizar diretamente no array ss.

Agradecemos a leitura, esperamos que ajude a todos, obrigado pelo apoio ao site!

Você também pode gostar