Android utilizando diseños como una plantilla para crear múltiples instancias de diseño

Aceptar, Así que entiendo cómo utilizar la etiqueta de inclusión, pero me he encontrado con un problema.

Básicamente quiero tener un diseño definido en xml que tiene un par de TextView s y un ImageView en él. A continuación, quiero iterar a través de una matriz y rellenar los campos dentro de la disposición xml dependiendo de lo que está en una matriz (que se rellena en tiempo de ejecución). Así, hacer varias copias del diseño xml y rellenar los campos con datos únicos. Ahora no tengo ni idea de cómo puede reutilizar este LinearLayout de esta manera como el TextView s y ImageView s dentro de él tienen un id constante y tengo que hacer varias copias de este diseño.

¿Hay alguna forma de inflar un recurso y luego hacer una copia de él, que funcionaría … Así que

 LinearLayout one = new LinearLayout(inflater.inflate(R.layout.home, container, false)); 

^ No hay ningún constructor como ese desafortunadamente.

La única otra manera es hacerlo todo programatically pero preferiría tener las propiedades de las vistas y el LinearLayout en xml algo que en el código. Es como si quisiera que el LinearLayout fuera una plantilla que puedas hacer copias de lo que supongo … Realmente no estoy seguro si eso es posible.

Usted puede hacer esto fácilmente, sólo tiene que descomponerlo. Primero carga el diseño en el que desea insertar sus vistas dinámicas. A continuación, inflar su subview y llenarlo tantas veces como lo necesite. A continuación, agrega la vista a la disposición principal y, finalmente, establece la vista de contenido de la actividad en la vista principal.

He aquí un ejemplo:

  LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout parent = (LinearLayout) inflater.inflate(R.layout.main, null); for (int i = 0; i < 3; i++) { View custom = inflater.inflate(R.layout.custom, null); TextView tv = (TextView) custom.findViewById(R.id.text); tv.setText("Custom View " + i); parent.addView(custom); } setContentView(parent); 

Aquí está el archivo main.xml que estoy insertando en:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > </LinearLayout> 

Y aquí está la vista custom.xml que hincho, relleno e inserto dinámicamente:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> 

¡Espero que este ejemplo ayude!

Para annyone todavía buscando una solución similar, al parecer también se puede utilizar include directamente en xml y todavía ser capaz de referirse a ellos en el código:

 LinearLayout row1 = (LinearLayout) findViewById(R.id.row1) TextView text1 = row1.findViewById(R.id.text); LinearLayout row2 = (LinearLayout) findViewById(R.id.row2) TextView text2 = row2.findViewById(R.id.text); 

Fuente: Romain Guy

  • Botón uniformemente espaciado en Layout
  • Android define la forma XML como dibujable mediante programación
  • Superscript and Subscript en la aplicación de Android XML
  • android cómo establecer el icono de la casilla de verificación en el derecho?
  • Android forma xml dibujable - cómo dibujar un formulario u?
  • Android: state_enabled falta / no funciona?
  • Cómo configurar el fondo del botón seleccionado / no seleccionado en el archivo XML
  • Listview cambia la posición de otras vistas en el teclado abierto
  • La diferencia entre: SAX Parser, XPath, DOM, XMLPullParser
  • Color del borde del botón de Android
  • Obligar a un botón a permanecer en la parte inferior de la pantalla del teléfono
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.