Creación de varios objetos utilizando el bucle for

Lo que quiero es crear vista múltiple en el ejemplo de bucle

for(int i =1; i<5; i++){ GridView view = new Gridview(this); } 

Pero crea 5 gridview con el mismo nombre .. así que en futuro no puedo establecer la opción diferente a un gridview específico. ¿Cómo puedo obtener, que gridivew creado en un bucle get view + i name

Utilizar una lista

 List<GridView> views = new ArrayList<GridView>(); for(int i = 1; i < 5; i++) { views.add(new GridView(this)); } 

A continuación, puede obtener sus puntos de vista con

 views.get(i); 

Además, en su ejemplo, cuando se termina un paso del bucle for , la referencia a ese objeto se pierde, ya que el ámbito en el que fueron creados queda. Sin referencia a los objetos, el recolector de basura entra y libera esa memoria, borrando los objetos.

Por lo tanto, no podrá acceder ni siquiera al último objeto creado. Si modifica el código de este modo, al final de este código sólo tendrá el último objeto instanciado:

 GridView view; for(int i =1; i<5; i++){ view = new Gridview(this); } 

Ahora el objeto existe en el ámbito al que se encuentra al final del fragmento de código. Pero sólo existe un objeto.

Por lo tanto, la solución es almacenar los objetos en alguna estructura adicional: una matriz si sabe exactamente cuántos objetos desea, o alguna estructura de colección asignada dinámicamente. Y usted tiene ejemplos de ambos en las otras respuestas.


Añadido : Lo que realmente estás pidiendo (para construir dinámicamente el nombre de referencia del objeto) se llama metaprogramación. No sé si es posible en Java, pero aquí hay un ejemplo de esto hecho en PHP:

 class Object { function hello(){ echo "Hello \n"; } } for($i =1; $i<5; $i++){ $name = "view".$i; $$name = new Object(); } $view1->hello(); $view2->hello(); $view4->hello(); 

Aquí está el código runnable: http://codepad.org/bFqJggG0

Utilice una List de GridViews .

 List<GridView> grids = new ArrayList<GridView>(); for(int i =1; i<5; i++){ grids.add(new Gridview(this)); } 

Creo que este código creará 5 GridViews, 4 de los cuales estarán inmediatamente disponibles para Garbage Collection ya que su código ya no tiene una referencia a ellos.

Si usted los crea en un bucle, entonces pienso que estaría mirando para almacenarlos en una estructura de datos tal como una lista o un mapa y entonces tener acceso a ellos vía un índice o una llave.

Creo que puedes hacer algo como esto:

 for(int i =1; i<5; i++){ GridView view = new Gridview(this); view.setId(i); } 

y luego, puede diferenciar entre todas las vistas

 GridView[] view=new GridView[5]; for(int i=1;i<5;i++){ view[i]=new GridView(this);} 

Ahora creo que puede establecer las opciones especificadas.

  • Android: Permiso denegado para / data / local / tmp / *
  • API de SMS de Android
  • ¿Cómo obtener una lista de elementos en espresso?
  • ¿Cuál es el enfoque correcto para crear una aplicación para Android?
  • El método getOrientation () de Android devuelve resultados incorrectos
  • Comprobar BitmapDescriptor para null
  • Android: Cómo utilizar AlarmManager
  • Tipo Advertencia de seguridad con Iterator JSON
  • ¿Por qué Gradle sólo incluye clases de mi biblioteca con la dependencia del proyecto
  • Llamada de la API de Last.fm desde la aplicación de Android
  • Java.lang.VerifyError IllformedLocaleException
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.