Einstellung-tags um jedes Element in einem ListView in Android?
Ich habe eine ListView, wo ich möchte jedem Element eine ID-Nummer angehängt (nicht die gleiche wie die positions-Nummer). Ich hatte gehofft, dies könnte geschehen, indem ein tag, um jedes View-Element in der ListView mit setTag()
wenn diese Ansichten erstellt werden.
Momentan bin ich am erstellen der ListView so:
final ListView listview = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, names);
listview.setAdapter(adapter);
Den names
variable in der ArrayAdapter oben genannten Parameter eine ArrayList, und jeder string-Wert in dieser Liste hat auch eine einzigartige ID, die ich will, um den link dieser string irgendwie.
Gibt es eine Möglichkeit, die ich bekommen kann den Zugriff auf und ändern Sie alle Ansichten mit ein tag? Eine Idee war zum erstellen meiner eigenen erweiterten Klasse ArrayAdapter und überschreiben Sie die getView () - Methode, aber ich weiß nicht wirklich verstehen, wie es funktioniert und wie ich gehen würde, über das tun dies.
Oder gibt es einen besseren Weg, um link-IDs mit jeder saite so, als das hinzufügen von tags, wie ich versuche zu tun?
InformationsquelleAutor mattboy | 2012-05-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie eine
ViewBinder
und legen Sie die tags, wie dieListView
wird aufgefüllt mit was auch immer Sie brauchen. Sie können alle Eigenschaften der Ansicht zu bestimmen, was der tag geht, wo also das sollte das sein, was du bist suchen für.Habe ich nur verwendet diese genau die gleiche Antwort auf eine andere Frage (wenn auch etwas anders) gestern.
setViewBinder()
scheint nicht zu funktionieren mit Android ArrayAdapter<String>? Eclipse sagt, die Methode ist nicht definiert für diesen Typ. Bin ich etwas fehlt?Ich war mit einem SimpleAdapter statt eines ArrayAdapter glaube ich
InformationsquelleAutor Juan Cortés
über getView , es funktioniert durch die Verwendung einer Methode des recycling Ansichten. ich werde versuchen, es zu erklären, in einer einfachen Weise.
angenommen, Sie haben Tonnen von Elemente, die angezeigt werden können . Sie wollen nicht, um wirklich zu erstellen, die Tonnen von Ansichten zu , denn das würde eine Menge Speicher . google gedacht und bieten Ihnen die Möglichkeit, aktualisieren Sie nur die Ansichten, die angezeigt werden müssen zu einem bestimmten Zeitpunkt.
also , wenn es einen leeren Bereich der listview , es wird gefüllt mit einer neuen Ansicht . wenn der Benutzer scrollt die Ansicht , dass versteckt wird, wird wiederverwertet und gegeben zurück zu Ihnen auf die getView , werden aktualisiert mit den Daten von der einen, die stattdessen angezeigt .
zum Beispiel , wenn Sie nach unten scrollen , der Obere Ansicht versteckt wird für den Endverbraucher , aber in der Tat wird es die genau gleiche Ansicht, ist auf der Unterseite .
um zu verstehen, wie man die listview haben die beste Leistung und in der Praxis sehen, wie und warum es funktioniert, wie ich gesprochen haben , sehen Sie sich dieses video:
http://www.youtube.com/watch?v=wDBM6wVEO70
als für tags , ich denke, Sie wollen etwas anderes zu tun , da die Daten selbst (in der Regel eine Art von Sammlung, wie eine arrayList) bereits weiß, wo Sie zu aktualisieren , da man die position über die getView . wenn Sie möchten, dass eine bestimmte Ansicht zu aktualisieren , werden Sie möglicherweise in der Lage, dies zu tun durch die Verwendung einer hashmap, hält upadting , die Ihre Schlüssel, ist die position in der Sammlung , und der Wert die zugeordnete Ansicht angezeigt wird . auf jedes mal, wenn Sie gehen, um getView zu löschen , müssen Sie den Eintrag, gehören zu den anzeigen (wenn vorhanden) und weisen Sie die neue position mit der Ansicht, dass Sie got/erstellt .
InformationsquelleAutor android developer
Danke für die Antworten. thisMayhem ' s Antwort wäre wahrscheinlich einfacher gewesen am Ende, aber auf meiner Suche, um mehr zu erfahren landete ich machen meine eigene adapter nach dieses tutorial. Ich überliefern den Namen und die IDs in den adapter und setzen Sie den Namen wie der text des TextViews und die IDs der tags.
InformationsquelleAutor mattboy
Ich gehe lieber mit der Lösung diskutiert dieser thread. Es ist immer das einfachste, alle Daten im gleichen Ort und in diesem Fall erstellen Sie einfach eine Klasse zu halten, alle Informationen, die Sie benötigen für jedes Element.
InformationsquelleAutor Boris Strandjev