Ho un LinearLayout con orientamento verticale come genitore, voglio aggiungere qualche vista programmaticamente più volte a questo genitore. In questo momento sto gonfiando il bambino ogni volta ricevendo nuovi riferimenti a ogni elemento dell'interfaccia utente prima di aggiungerlo al genitore. Questo non sembra essere molto efficiente, c'è un modo migliore per farlo.Come aggiungere la stessa vista al genitore più volte gonfiandolo solo una volta
Il codice corrente che sto usando è sotto, Se mi infilo solo una volta prima per ciclo ottengo errore di runtime "ha specificato che il figlio ha già un genitore. Devi chiamare removeView() sul genitore del figlio prima."
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);
}
Sono d'accordo, sarebbe bello se ci fosse un modo semplice per "clonare" le visualizzazioni, ma devo ancora trovarlo. Gonfiando all'infinito è. Tuttavia, devo dire che dal tuo frammento di codice, sembrerebbe che tu voglia usare un 'ListView'. – dmon
Ho paura che questo sia di progettazione. Non puoi avere più genitori per una vista, oltre ad aggiungere la stessa vista al genitore più volte. Sarebbe abbastanza difficile scrivere codice senza bug per ViewGroups (e scenari simili) se non fosse così. – inazaruk
@dmon Non ho progettato il mio layout per usare ListView perché avrebbe reso il codice più complesso perché volevo che ogni cosa venisse disposta. Credo che per l'efficienza devo spostare tutto su ListView. – mkso