Ich möchte eine custom adapter
für meine Listenansicht erstellen . Gibt es einen Artikel, der mir erklärt, wie man einen erstellt und wie er funktioniert?
android
listview
android-tablelayout
custom-adapter
Harsha MV
quelle
quelle
Antworten:
Dies ist eine Klasse, die ich für mein Projekt verwendet hatte. Sie benötigen eine Sammlung Ihrer Artikel, die Sie anzeigen möchten, in meinem Fall
<Item>
. Sie müssen dieView getView(int position, View convertView, ViewGroup parent)
Methode überschreiben .R.layout.itemlistrow
definiert die Zeile derListView
.In der
MainActivity
DefinitionListView
wie folgt:quelle
Ich weiß, dass dies bereits beantwortet wurde ... aber ich wollte ein vollständigeres Beispiel geben.
In meinem Beispiel die ,
ListActivity
die unsere eigene wird angezeigtListView
wird aufgerufenOptionsActivity
, weil in meinem Projekt diesActivity
die verschiedenen Optionen angezeigt wird mein Benutzer einstellen kann meine App steuern. Es gibt zwei Listenelementtypen, ein Listenelementtyp hat nur einTextView
und der zweite Listenelementtyp hat nur einButton
. Sie können beliebige Widgets in jeden Listenelementtyp einfügen, aber ich habe dieses Beispiel einfach gehalten.Die
getItemView()
Methode prüft, welche Listenelemente vom Typ 1 oder Typ 2 sein sollen. Gemäß meinen oben definierten statischen Ints sind die ersten 5 Listenelemente vom Listenelementtyp 1 und die letzten 5 Listenelemente vom Listenelementtyp 2 Wenn Sie dies kompilieren und ausführen, haben Sie eineListView
, die fünf Elemente enthält, die nur ein enthaltenButton
, und dann fünf Elemente, die nur ein enthaltenTextView
.Unten finden Sie den
Activity
Code, die Aktivitäts-XML-Datei und eine XML-Datei für jeden Listenelementtyp.OptionsActivity.java:
activity_options.xml:
list_item_type_1.xml:
list_item_type2.xml:
quelle
Dieser Code ist leicht zu verstehen.
three_horizontal_text_views_layout.xml
ThreeStrings.java
ThreeHorizontalTextViewsAdapter.java
main_layout.xml
MainActivity.java
quelle
ThreeHorizontalTextViewsAdapter.java
. Ist es das gleiche wie übrigActivities
Google hat ein Beispiel namens EfficientAdapter, das meiner Meinung nach das beste einfache Beispiel für die Implementierung benutzerdefinierter Adapter ist. http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html @CommonsWare hat eine gute Erklärung der im obigen Beispiel verwendeten Muster geschrieben : http: // commonsware.com/Android/excerpt.pdf
quelle
Sie können sich dieses Beispiel im offiziellen ApiDemos ansehen. Es zeigt, wie es erweitert
BaseAdapter
und auf a angewendet werden kannListView
. Schauen Sie sich danach einfach die Referenz anBaseAdapter
und versuchen Sie zu verstehen, was jede Methode tut (einschließlich der geerbten) und wann / wie sie verwendet wird.Auch Google ist dein Freund :).
quelle
Überprüfen Sie diesen Link , ganz einfach über das
convertView
können wir das Layout einer Zeile erhalten, die in der Listenansicht angezeigt wird (das ist dieparentView
).Mit der Position können Sie die Objekte der erhalten
List<Item>
.Danach müssen wir die gewünschten Details des Objekts auf die identifizierten Formular-Widgets setzen.
dann wird die konstruierte Ansicht zurückgegeben, die an die
parentView
(die einListView
/ istGridView
) angehängt wird .quelle
Hier finden Sie eine vollständige Anleitung zum schrittweisen Erstellen eines benutzerdefinierten Adapters für die Listenansicht.
https://www.caveofprogramming.com/guest-posts/custom-listview-with-imageview-and-textview-in-android.html
quelle
Datenmodell
Array-Adapter
Hauptaktivität
row_item.xml
quelle
Ein kompakteres Beispiel für einen benutzerdefinierten Adapter (unter Verwendung eines Listenarrays als meine Daten):
Und so benutzt man es:
quelle
BaseAdapter
ist der beste benutzerdefinierte Adapter für die Listenansicht.und es hat viele Funktionen wie
getCount()
,getView()
usw.quelle
Es ist sehr einfach.
Quelle: Benutzerdefiniertes ListView Android Tutorial
quelle
quelle
quelle