2014-11-19 13 views
5

Ich habe mich schon ein wenig umgeschaut, aber ich habe keine richtige Antwort auf diese Frage gefunden. Ich fange gerade an, über Android-Adapter zu lernen und hatte ein paar Fragen. Erstens, muss ich getView() manuell aufrufen oder wird es automatisch aufgerufen? Wenn ja, wann heißt es eigentlich? Zuletzt habe ich festgestellt, dass es in der Liste einen Parameter für "position" gibt. Ist das etwas, was ich durch Iteration erhöhen muss oder wird es irgendwie intern erhöht?Wie wird getView() für einen ListView-Adapter aufgerufen?

danke!

+0

Ich würde empfehlen, durch dieses Tutorial https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView.Es ist, was wirklich mich mit Android Listenansichten – rperryng

Antwort

3

Erstens, muss ich getView() manuell aufrufen oder wird es automatisch aufgerufen?

Nein, es wird automatisch aufgerufen.

Wenn ja, wann heißt es eigentlich?

Es wird aufgerufen, wenn der Benutzer etwas zu Ihrem ListView tut, wie wenn die ListView ein neues Objekt angezeigt wird, wenn Sie es zu scrollen.

Zuletzt bemerkte ich, dass es einen Parameter für "Position" mit in der Liste gibt. Ist das etwas, was ich durch Iteration erhöhen muss oder wird es irgendwie intern erhöht?

Nein, es wird die Position Ihres Listenelements automatisch sein. Es ist das gleiche für andere params wie (der Standard) View convertView, es wird die View des aktuellen Artikels (Reihe von ListView).

+0

klicken der Parameter ist "int position" wie getView (endgültige int position, View convertView, ViewGroup Eltern) so wenn ich Ansicht zu erhalten, ist Position der Index für den Ort in meiner Liste zu sehen oder Array? – Will

0

Es ist ein Teil davon, wie der Adapter funktioniert. Sie müssen keine dieser Methoden aufrufen, da dies implizit über Ihre Listview aufgerufen wird.

Werfen Sie einen Blick auf diese,

http://www.vogella.com/tutorials/AndroidListView/article.html

Es ist ein guter Artikel darüber, wie ein Listview zu verwenden.

+0

Ich habe mir das angesehen, aber ich war meistens neugierig, woher der int-Positionsparameter kam und wie er inkrementiert wurde. Sorry, ich kann nicht mit meinem rep bewerten :( – Will

0

Adapter ist eine Art von Verbindung zwischen AdapterView (ListView, GridView usw.) und Datenfeldern. Adapter erzeugt Vies, die in der AdapterView angezeigt würden. Wenn also ListView Elemente anzeigen muss, ruft es zuerst getCount() -Methode des Adapters auf, nach einigen Messungen macht es einige getView() -Aufrufe, um den sichtbaren Teil des listView mit Elementen zu füllen. Und während des Scrollens ruft ListView getView() vom Adapter für die nächsten Positionen auf. Es ist wichtig, keine Annahmen über die Reihenfolge der getView() - Aufrufe zu machen - es ist nicht zwingend erforderlich, dass listview getView() in derselben Reihenfolge aufruft wie Ihre geordneten Daten. Sie müssen sich also keine Gedanken über die Erhöhung des Positionsindex machen - dieses Argument wird beispielsweise verwendet, wenn Sie zwei unterschiedliche Hintergründe für gerade und ungerade Zeilen anzeigen müssen - und Sie können die Position verwenden, um eine Entscheidung zu treffen Farbe, die Sie verwenden müssen. Es gibt eine gute Präsentation über die Anatomie der ListView

Verwandte Themen