Beim Schreiben meines eigenen Adapters, der die ArrayAdapter Klasse erweitert, stieß ich auf die verschiedenen verfügbaren Konstruktoren und ich bemerkte, dass sie alle einen textViewResourceId Parameter benötigen. So zunächst, entschied ich mich, dass ich meine benutzerdefinierte Adapterklasse füttern android.R.id.text1:Ist das Argument textViewResourceId immer notwendig?
MyAdapter adapter = new MyAdapter(this, R.layout.myRow, android.R.id.text1);
jedoch später während meiner Entwicklung, habe ich beschlossen, getView Methode außer Kraft zu setzen, wo ich würde
TextView label = (TextView) myRow.findViewById(android.R.id.text1);
label.setText("Position #" + position);
Welche hat gut funktioniert. Aber dann kam diese Frage in den Sinn: Wenn ich die Logik für mache, wie die Zeile angezeigt werden, ist es wirklich notwendig, eine textViewResourceId an den Konstruktor zur Verfügung zu stellen, wenn ich meine benutzerdefinierten Adapter initiieren? Oder ist es der Fall, dass, wenn Sie getView überschreiben, dieser Parameter nicht mehr notwendig ist? Wenn mein Denken richtig ist, was ist die gängige Praxis, um den Adapter zu instancieren, obwohl Sie wissen, dass Sie das Anzeigeverhalten sowieso übersteuern werden?
(upvote) Anstatt passieren 0, würde ich einen Konstruktor verwenden, die überhaupt nicht benötigen 'textViewResouceId'. – Sam
@Sam - Wenn Sie ArrayAdapter verwenden möchten, müssen Sie ihm die textViewResourceId übergeben. Es kann nicht vermieden werden, da es es erwartet (auch wenn es nicht gültig ist). Sie können den Quellcode kopieren und den ArrayAdapter neu schreiben, sodass die textViewResourceId nicht benötigt wird. Jedoch, um einfach zu vermeiden, einen einzelnen int zu übergeben, ist es nicht wirklich wert. – dymmeh
@Sam - Oder Sie können einen eigenen Adapter erstellen, der den BaseAdapter erweitert. Sie werden nicht die integrierte Array-Behandlung bekommen, so dass Sie das selbst tun müssten. Sie können es jedoch so anpassen, wie Sie möchten, und die grundlegenden Funktionen zum Behandeln von Arrays einbauen. – dymmeh