Wie Sie die gleiche Ansicht mehrfach zum Eltern hinzufügen, indem Sie sie nur einmal aufblasen
Ich habe ein LinearLayout mit vertikaler Ausrichtung als Elternteil, möchte ich hinzufügen, dass einige anzeigen programmgesteuert mehrere mal zu diesem Elternteil. Jetzt bin ich aufblasen Kind jedes mal immer neue Verweise auf jedes UI-element vor dem hinzufügen auf die Eltern. Dies scheint nicht sehr effizient, gibt es eine bessere Möglichkeit, dies zu tun.
Aktuelle code, den ich verwende, ist unten, Wenn ich das aufblasen erst einmal vor der for-Schleife bekomme ich runtime error", die er angegeben Kind bereits einen Elternteil. Rufen Sie removeView() auf die Eltern zuerst."
LayoutInflater inflator = LayoutInflater.from(getBaseContext());
LinearLayout parentPanel = findViewById(R.id.parent_pannel);
ArrayList<String> myList = getData();
for(String data : myList) {
//inflate child
View item = inflator.inflate(R.layout.list_item, null);
//initialize review UI
TextView dataText = (TextView) item.findViewById(R.id.data);
//set data
dataText.setText(data);
//add child
parentPanel.addView(item);
}
InformationsquelleAutor der Frage mkso | 2011-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hast du eigentlich prüfen, ob aufzublasen langsam ist? Soweit ich weiß, aufblasen Ansicht ist sehr schnell (fast so schnell wie das erstellen von sichten manuell).
Es mag vielleicht überraschend sein, für Sie zu hören, aber bläst in der Tat nicht Parsen der XML-Dateien überhaupt. XML-Dateien für das layout analysiert und vorverarbeitet zur compile-Zeit - Sie sind gespeichert in einer binären form, die macht-Sicht die inflation sehr effizient (das ist, warum Sie nicht aufblasen, eine Ansicht aus einer XML zur Laufzeit generiert).
InformationsquelleAutor der Antwort Jarek Potiuk
Ich bin mir nicht sicher, was deine Ansicht ist, aber Sie haben, erstellen Sie ihn manuell über das aufblasen des XML:
Aber ja Ihr klar versucht, etwas, das getan wurde für Sie mit Einfache ListView & API
InformationsquelleAutor der Antwort Blundell
Können Sie nichtauch wenn Sie versuchen, erstellen Sie eine
new view
von der altenview
Objekt wird das Objekt per Referenz übergeben werden, nicht Wert, und daher werden Sie bekam eine Ausnahme als childAlreadyHasParentund so, der einzige Weg ist, um dieview
in einefor loop
mit der Anzahl der Zeiten, die Sie wollen, dass es aufgeblasen werden, und diese Schleife muss die Schaffung Prozess von Anfang an nicht nur das aufblasen Linien.InformationsquelleAutor der Antwort Muhammed Refaat
Aufblasen mehrere Male nicht gemacht werden können, die gleiche Weise, es zu tun mit einem einzigen Schuss. Hoffe, das funktioniert
Dies funktionieren wird, zumindest arbeitete mich
InformationsquelleAutor der Antwort Sidharth