AdapterView

AdapterView é um ViewGroup que exibe itens carregados em um adaptador. O tipo mais comum de adaptador vem de uma fonte de dados baseada em matriz.

Este guia mostra como concluir várias etapas importantes relacionadas à configuração de um adaptador.

Preencher o layout com dados

Para adicionar dados ao layout criado na IU do seu aplicativo, adicione um código semelhante ao seguinte:

Kotlin

    val PROJECTION = arrayOf(Contacts.People._ID, People.NAME)
    ...

    // Get a Spinner and bind it to an ArrayAdapter that
    // references a String array.
    val spinner1: Spinner = findViewById(R.id.spinner1)
    val adapter1 = ArrayAdapter.createFromResource(
            this, R.array.colors, android.R.layout.simple_spinner_item)
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    spinner1.adapter = adapter1

    // Load a Spinner and bind it to a data query.
    val spinner2: Spinner = findViewById(R.id.spinner2)
    val cursor: Cursor = managedQuery(People.CONTENT_URI, PROJECTION, null, null, null)
    val adapter2 = SimpleCursorAdapter(this,
            // Use a template that displays a text view
            android.R.layout.simple_spinner_item,
            // Give the cursor to the list adapter
            cursor,
            // Map the NAME column in the people database to...
            arrayOf(People.NAME),
            // The "text1" view defined in the XML template
            intArrayOf(android.R.id.text1))
    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    spinner2.adapter = adapter2
    

Java

    // Get a Spinner and bind it to an ArrayAdapter that
    // references a String array.
    Spinner s1 = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter adapter = ArrayAdapter.createFromResource(
        this, R.array.colors, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s1.setAdapter(adapter);

    // Load a Spinner and bind it to a data query.
    private static String[] PROJECTION = new String[] {
            People._ID, People.NAME
        };

    Spinner s2 = (Spinner) findViewById(R.id.spinner2);
    Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null);

    SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,
        android.R.layout.simple_spinner_item, // Use a template
                                              // that displays a
                                              // text view
        cur, // Give the cursor to the list adapter
        new String[] {People.NAME}, // Map the NAME column in the
                                             // people database to...
        new int[] {android.R.id.text1}); // The "text1" view defined in
                                         // the XML template

    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s2.setAdapter(adapter2);
    

Observe que é necessário ter a coluna People._ID na projeção usada com o CursorAdapter. Caso contrário, você receberá uma exceção.

Se você mudar os dados subjacentes lidos pelo seu adaptador durante a vida útil do seu aplicativo, será necessário chamar notifyDataSetChanged(). Isso notificará a visualização anexada de que os dados foram mudados e que ela precisa ser atualizada.

Gerenciar seleções de usuários

Gerencie a seleção do usuário definindo o membro AdapterView.OnItemClickListener da classe como um listener e capturando as mudanças de seleção.

Kotlin

    val historyView: ListView = findViewById(R.id.history)
    historyView.onItemClickListener = AdapterView.OnItemClickListener { parent, view, position, id ->
        Toast.makeText(context, "You've got an event", Toast.LENGTH_SHORT).show()
    }
    

Java

    // Create a message handling object as an anonymous class.
    private OnItemClickListener messageClickedHandler = new OnItemClickListener() {
        public void onItemClick(AdapterView parent, View v, int position, long id)
        {
            // Display a messagebox.
            Toast.makeText(context,"You've got an event",Toast.LENGTH_SHORT).show();
        }
    };

    // Now hook into our object and set its onItemClickListener member
    // to our class handler object.
    historyView = (ListView)findViewById(R.id.history);
    historyView.setOnItemClickListener(messageClickedHandler);
    

Para saber mais, consulte o tópico Controles giratórios.