Android: ¿Es posible hacer una copia de una vista?

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 un poco de texto. Desde que 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 de forma programática en un bucle 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 basados ​​en el tamaño de pantalla del dispositivo, etc.

Entonces pensé. Bueno, ¿y si tuviera un Layout con sólo un perfil en él? Mi código podría conseguir que un perfil con findViewById() y luego crear nuevos basados ​​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 es java y temporaryProfile es ahora una referencia a originalProfile. ¿Hay alguna manera de hacer una copia de este RelativeLayout? Soy consciente de LayoutInflater, pero todavía no entiendo cómo funciona. También hay Object.clone() .

No tanto. Suena como su caso particular podría beneficiarse de un ListView de algún tipo y un adaptador (ver recursos como este para información). Si no, entonces un LayoutInflater es la mejor respuesta, ya que hace exactamente lo que quiere. La adquisición de uno puede utilizarlo para "inflar" cualquier vista que haya definido en sus archivos de diseño XML y hacer lo que quiera con él.

Aquí hay una gran discusión del inflado.

Usted puede hacer una copia de su inflador con un nuevo contexto. Layout Inflater – Desarrolladores de Android

  • Poner contenido debajo de AppBarLayout en un CoordinatorLayout
  • PreventrtlPropertiesIfNeeded
  • Pre-estado pre-favorecido
  • Cómo agregar múltiples TextView dynamicall a la definición LinearLayout en main.xml
  • Cambio de vista de la aplicación de Android en lugar de emulador
  • ListView in Scroll Ver mi vista de desplazamiento se mueve a la parte superior de listview. ¿Cómo puedo evitar esto?
  • LinearLayout con dos hijos de igual ancho
  • Teclado personalizado: manejo del tipo de entradaTipo
  • Imagen y color de fondo de Android Layout
  • Cómo agregar fragmentos de forma programática en relativelayout
  • Añadir imagen de marca de agua en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.