Adapteransicht

Schreiben Sie jetzt
Jetpack Compose ist das empfohlene UI-Toolkit für Android. Hier erfahren Sie, wie Sie in „Compose“ mit Layouts arbeiten.

AdapterView ist ein ViewGroup zum Anzeigen von Elementen, die in einen Adapter geladen wurden. Der gängigste Adaptertyp stammt aus einer Array-basierten Datenquelle.

In dieser Anleitung erfahren Sie, wie Sie mehrere wichtige Schritte zum Einrichten eines Adapters ausführen.

Das Layout mit Daten füllen

Um dem Layout, das Sie auf der Benutzeroberfläche Ihrer Anwendung erstellen, Daten hinzuzufügen, fügen Sie Code ähnlich dem folgenden hinzu:

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

Beachten Sie, dass die Spalte „People._ID“ in der Projektion mit CursorAdapter verwendet werden muss, da Sie sonst eine Ausnahme erhalten.

Wenn Sie während der Lebensdauer der Anwendung die vom Adapter gelesenen zugrunde liegenden Daten ändern, sollten Sie notifyDataSetChanged() aufrufen. Dadurch wird die angehängte Datenansicht darüber informiert, dass die Daten geändert wurden, und sie sollte automatisch aktualisiert werden.

Hinweis:Unter Android Studio 3.6 und höher kann die Funktion View Binding findViewById()-Aufrufe ersetzen und bietet die Sicherheit der Typen bei der Kompilierung für Code, der mit Ansichten interagiert. Sie können die Bindung der Ansicht anstelle von findViewById() verwenden.

Nutzerauswahl verarbeiten

Zur Verarbeitung der Nutzerauswahl setzen Sie das AdapterView.OnItemClickListener-Mitglied der Klasse auf einen Listener und erfassen die Auswahländerungen.

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

Weitere Informationen finden Sie unter dem Thema Spinner.