2012-08-31 47 views
5

Estoy construyendo una aplicación que genera dinámicamente algunas etiquetas y vistas. Definí cómo debería verse mi "vista personalizada" en un diseño xml y desde el código infló este diseño.¿Cómo guardar en caché las vistas en Android?

Dado que el diseño inflado será siempre el mismo, quiero hacer este paso solo una vez. Después de tener el diseño, quiero guardarlo en caché y usarlo la próxima vez cuando lo necesite.

El problema es que si pongo mi diseño inflado en el caché (en un hashmap por ejemplo) y lo agrego a un diseño principal, la próxima vez cuando intento agregarlo nuevamente (esta vez obtendré el diseño del caché) el sistema dice que mi diseño ya tiene un padre.

¿Conoces algún método para separar una vista secundaria del elemento primario sin quitar la vista secundaria?

añadido algo de código:

private static HashMap<String, LinearLayout> mComponentsCache; 

// inflate and add the layout in cache 
layout = (LinearLayout)mLf.inflate(R.layout.form_textbox, mHolder, false); 
mComponentsCache.put(FormFieldType.TYPE_TEXT, layout); 
+0

¿Cómo exactamente almacena en caché el diseño y por qué lo hace de esta manera? – DroidBender

+2

Quiero hacerlo de esta manera porque no es necesario volver a inflar la misma vista que ya estaba inflada. Como ejemplo, tengo que mostrar 5 cuadros de texto que tienen el mismo diseño pero diferente contenido. –

Respuesta

9

realidad no se puede hacer esto. Cito su comentario

I want to do it in this way because is no point to re-inflate the same view which was already inflated. As an example I have to show 5 textboxes which have the same layout but different content.

Usted tendrá que inflar cada vez porque necesita 5 instancias diferentes de esta caja de texto. Si no desea inflar, debe encontrar una manera de copiar el diseño que ya está creado y que no ayudará a mejorar porque copiar también es "costoso".

De hecho, para dejarlo en claro, inflar la vista no se analiza en XML (por si acaso lo crees), se trata de un código compilado y, por lo tanto, del hecho de esforzarse en implementar un código La forma de crear una copia de tu vista no tiene sentido.

Conclusión: se adhieren a la inflación.

+0

Gracias. Me quedaré con la inflación :) –

+0

"De hecho, para dejarlo en claro, al inflar la vista no se somete a análisis XML (por si acaso lo crees), se trata de un código compilado" ... resuelto uno de las confiscaciones que tuve ... thnx :-) –

+0

Si este es el caso, ¿cómo funciona el almacenamiento en caché de las filas de la lista de lista? Parece que podemos reutilizar las vistas allí, ¿cómo lo hace? – Justin

Cuestiones relacionadas