Únete a ⁠ #Android11: The Beta Launch Show el 3 de junio.

AdapterView

AdapterView es un ViewGroup que muestra los elementos cargados en un adaptador. El tipo de adaptador más común viene de una fuente de datos basada en arreglos.

En esta guía, se muestra cómo completar varios pasos clave relacionados con la configuración de un adaptador.

Rellena el diseño con datos

Para agregar datos al diseño que creas en la IU de la app, agrega código similar al siguiente:

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);
    

Ten en cuenta que es necesario tener la columna People._ID en proyección utilizada con CursorAdapter o, de lo contrario, obtendrás una excepción.

Si, durante el transcurso de la vida de la app, cambias los datos subyacentes que lee el adaptador, debes llamar a notifyDataSetChanged(). Esto notificará a la View adjunta que los datos se modificaron y deben actualizarse.

Maneja las selecciones de usuario

Para manejar la selección del usuario, configura el miembro AdapterView.OnItemClickListener de la clase en un objeto de escucha y capta los cambios de selección.

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 obtener más información, consulta el tema Ícono giratorio.