2013-05-22 11 views
7

Il seguente pezzo di codice gonfia la stessa vista per 20 volte. Dal momento che il gonfiaggio è costoso. Voglio gonfiarlo solo uno e utilizzare la stessa vista per 20 elementi, voglio solo modificare i dati visibili nell'interfaccia utente.riutilizzare la vista inflazionata in Android

LinearLayout ll = new LinearLayout(context); 
for (int i = 0; i < 20; ++i) { 
    View itemView = inflater.inflate(getLayoutId(), parent, false); 
    itemView.setText(data.getName(i); 
    ll.add(itemView); 
} 

Voglio qualcosa di simile.

LinearLayout ll = new LinearLayout(context); 
View itemView = inflater.inflate(getLayoutId(), parent, false); 
for (int i = 0; i < 20; ++i) { 
    itemView.setText(data.getName(i); 
    ll.add(itemView); 
} 

Ma non sono in grado di utilizzare l'itemView obj in questo modo.

Qualcuno può dirmi come utilizzare la vista più volte una volta gonfiato.

+0

se avete solo un textView nel layout quindi è possibile creare textView programmazione –

+0

Si sta creando 20 diversi viste dallo stesso xml. Non è possibile creare meno di 20 visualizzazioni se sono necessarie 20 visualizzazioni. –

+0

textview che ho dato per un esempio, ho poche altre visualizzazioni. –

risposta

0

Non puoi farlo. Se pensi che sia costoso, allora trova un altro modo per creare il tuo layout.

Ma considera ad esempio gridview. Creano tantissime visualizzazioni e le mostrano e ciò funziona alla grande.

Non è possibile aggiungere lo stesso oggetto di una vista 2 volte a un layout. Ogni oggetto ha il suo stato che, nel tuo caso, in un modo dice che condividerai lo stato tra tutte le tue 20 visualizzazioni che non ha senso fare, il che significa cambiare il testo su un textView lo cambierà su tutto il resto ..

Basta gonfiare 20 viste separate e riempirle in modo appropriato.

Considerare anche l'utilizzo di ListView o GridView se si dispone della stessa visualizzazione in grado di offrire alcune funzioni utili come il riciclaggio delle viste.

-1

Si dovrebbe usare ViewHolder patern:

http://developer.android.com/training/improving-layouts/smooth-scrolling.html#ViewHolder

si dovrebbe fare tutte le cose che vuoi

+0

Desidero aggiungere queste 20 viste alla vista Scorrimento orizzontale. List View ha un adattatore che fornirà una vista convertita riutilizzabile. Se la vista Scorrimento orizzontale ha anche un adattatore che fornirà dati. –

+0

Il viewholder non esegue la clonazione delle visualizzazioni. Crea codice per clonare la vista prima di aggiungere al layout Il viewholder di –

+0

è solo uno schema per funzionare con ListView, la domanda originale implica che ListView non è un'opzione –

Problemi correlati