2016-08-29 1 views
0

Ich bin ein Neuling zu Adapter. Um mehr über die Implementierung von Adapter zu lernen, ging ich verschiedene Beispiele in SO und einigen anderen Blogs durch. Ich habe festgestellt, dass viele definieren getCount(), getItem(), in einer benutzerdefinierten Adapter-Klasse ArrayAdapter erweitern und nicht einmal diese Funktionen verwenden. Ich verstehe, dass in einer benutzerdefinierten Klasse, die 'BaseAdapter' erweitert, wir getCount(), getItem(), überschreiben müssen, um Dinge zu erledigen.Verwendung von getCount(), getItem(), getItemId() - Klasse, die ArrayAdapter erweitert

Also zu meiner Frage, muss ich diese Funktionen in einer benutzerdefinierten Adapterklasse beim Erweitern ArrayAdapter definieren?

Hinweis: Was mich wirklich überrascht war, dass, wenn ich eine benutzerdefinierte implementiert Spinner einen benutzerdefinierten Adapter mit ArrayAdapter erstreckt, ohne diese Funktionen zu definieren, kein Problem und alles funktionierte gut scheint. Ich bin wirklich verwirrt, ob ich es falsch gemacht habe.

+0

@people, die unten abstimmen. Bitte geben Sie auch den Grund für die Abstimmung an. Vielen Dank. – tpk

+0

Überprüfen Sie einfach die Quellen von 'ArrayAdapter' und sehen Sie, ob diese Methoden bereits implementiert sind und falls Sie die Implementierung nicht ändern wollen - überschreiben Sie sie nicht in Ihrer Klasse. – Egor

+0

'public T getItem (int position) { neue RuntimeException werfen (" Stub! "); } 'ist alles, was ich sehen kann. Sollte ich annehmen, dass wir getItem() im benutzerdefinierten Adapter überschreiben können, ohne '@ Override'-Annotation zu geben? – tpk

Antwort

0

Wir müssen getCount(), getItem(), nicht definieren, während Sie einen benutzerdefinierten Adapter erstellen, der ArrayAdapter erweitert. Es ist nicht notwendig, wie in der definition von ArrayAdapter diese Funktionen außer Kraft gesetzt werden. Aber wenn wir diese Funktionen außer Kraft setzen und unsere eigene Definition bereitstellen müssen, können wir das tun und es gibt überhaupt kein Problem.

Danke Egor für mich zur Definition zu führen.

0

Diese Methoden werden intern verwendet, wenn Sie Ihren Artikel erhalten. Setzen Sie Ihre Logik, um Ihre Daten in Ihre "getView" -Methode zu füllen.

+0

Können Sie bitte ausarbeiten? – tpk

Verwandte Themen