2010-07-28 5 views
18

Ich werde ein Gitter von Bildern machen und ich versuche herauszufinden, ob ein Array-Adapter oder eine Baseadaptor verwenden. Während die GridView example die Daten in einem Array speichert, verwendet sie einen BaseAdapter anstelle eines ArrayAdaptors. Ich bin neugierig, warum das so ist. Eine Sache, die ich an einem ArrayAdapter bemerkte, ist, dass sein Konstruktor aus einem unbekannten Grund eine textViewResourceId nimmt - obwohl die Dokumentation sagt, dass die getView verwendet werden kann, um es mit anderen Arten von Ansichten zu arbeiten. Also, wenn ich ein festes Raster von Bildern für ein Menü möchte, welche Klasse würden Sie empfehlen zu wählen?BaseAdapter oder ArrayAdaptor - Android

Antwort

48

Normalerweise wählen Sie Ihre Adapterklasse basierend auf den Modelldaten aus. Wenn Sie eine ArrayList Objekte haben, verwenden Sie ArrayAdapter. Wenn Sie eine Cursor aus einer Datenbankabfrage haben, verwenden Sie eine CursorAdapter. BaseAdapter kann für alles verwendet werden, aber es erfordert mehr Codierung, da es kein angeborenes Wissen darüber hat, wie man über die Daten iteriert.

+0

Wenn ich 'ArrayAdaptor' verwende, was mache ich mit der' textViewResourceId', da ich Bilder anstelle von Text verwende? – Casebash

+1

@Casebash: Ignoriere es, überschreibe 'getView()' und gib zurück, was du brauchst. – CommonsWare

+0

Aber Sie müssen etwas übergeben. Würde 0 gut funktionieren oder wäre -1 besser? – Casebash

Verwandte Themen