2010-11-11 12 views
62

Mi pregunta es casi exactamente esta pregunta:¿Cómo puedo clonar una vista?

Clone textview to append it to a ViewGroup

Sin embargo, yo estaba inflando una vista y, a continuación, intentar clonar a nivel de objeto por razones de rendimiento (no quiero a analizar XML cada solo tiempo), entonces esa respuesta no me ayuda. View.clone() está protegido y aparentemente no tiene un constructor de copia. ¿Hay alguna manera de hacer esto?

+2

¿Estás seguro de que sería mucho más rápido clonarlo en el nivel del objeto que inflarlo dos veces? ¿Qué está guiando esa afirmación? –

+1

Supongo que dije eso mal, es más como si quisiera ver si sería más rápido. – SapphireSun

+1

Si está creando una gran cantidad de instancias de una vista en particular, probablemente deba usar un ListView u otro elemento que reciclará las instancias de vista a medida que se desplaza. –

Respuesta

100

No puede clonar vistas, la forma de hacerlo es inflar su vista cada vez. Tenga en cuenta que el XML se compila en binario, que se puede analizar de manera muy eficiente.

+6

Hoy leí en algún lado que inflar las vistas es muy caro. Especialmente en listas. – frostymarvelous

+5

@frostymarvelous, es mucho más caro (en cuanto a la velocidad) que volver a utilizar las vistas ya creadas (aunque eso no siempre es una opción), pero solo hay una diferencia muy pequeña entre la creación inflada y la creación programática de nuevas Vistas. – Jakar

+4

¡no puedes clonar una vista específica! = o increíble! – usman

Cuestiones relacionadas