2012-02-03 18 views
7

La aplicación en la que estoy trabajando requiere un diseño dinámico que muestre un HorizontalScrollView de perfiles. Un perfil es simplemente un RelativeLayout con una imagen y texto. Como obtengo los datos de un archivo de datos, necesito crear un diseño Relativo para cada uno de los perfiles. Al principio creé cada RelativeLayout programáticamente en un ciclo for y luego lo agregué a la vista principal. Esto funciona, pero no quiero hacerlo de esta manera. Quiero utilizar diferentes archivos de diseño en función del tamaño de la pantalla del dispositivo, etc.Android: ¿Es posible hacer una copia de una Vista?

Entonces pensé. Bueno, ¿y si tuviera un Layout con solo un perfil? Mi código podría obtener ese perfil con findViewById() y luego crear uno nuevo basado en él. En otras palabras:

// get the layout 
    profileLayout = (LinearLayout) findViewById(R.id.profileLayout);   

    // get the first profile in the layout 
    originalProfile = (RelativeLayout) findViewById(R.id.profile1); 

    // make copy of profile 
    temporaryProfile = originalProfile; 

    // make changes to the this profile and add it back 
    profileLayout.addView(temporaryProfile); 

Por supuesto, esto no funciona porque se trata de Java y temporaryProfile ahora es una referencia a originalProfile. Entonces, ¿hay alguna forma de hacer una copia de este RelativeLayout? Soy consciente de LayoutInflater, pero todavía no entiendo cómo funciona. También hay Object.clone().

Respuesta

8

No tanto. Parece que su caso particular podría beneficiarse de un ListView de algún tipo y un adaptador (vea recursos como this para obtener información). De lo contrario, un LayoutInflater es la mejor respuesta ya que hace exactamente lo que usted desea. Al adquirir uno, puede usarlo para "inflar" cualquier vista que haya definido en sus archivos de diseño XML y hacer lo que quiera con ella.

Here's una gran discusión del inflador.

+0

gracias por la respuesta! –

0

¿Por qué no simplemente utiliza una inclusión en el archivo xml para el diseño que desea.

Cuestiones relacionadas