title: How do i create a list of Objects in Java
body: <p>I have a class file called MarkerCustom.  MarkerCustom has a constructor that takes three variables of different types.  </p>
  
  <pre><code>public MarkerCustom(int myInt, String, myString, BitmapData myBitmap) {
  </code></pre>
  
  <p>From my main Main activity i want to load a GLSurface view that will take an ArrayList of every instance of MarkerCustom that i will want to load into the GLSurface along with the data that will be passed into each instance of MarkerCustom's constructor.  </p>
  
  <p>Lets call the Array List <code>myMarkers</code>;</p>
  
  <p>i need <code>myMarkers</code> to look like this:</p>
  
  <pre><code>myMarkers[0] = [1, "hello", bitMapData1]
  myMarkers[1] = [66, "johnHandy", bitmapData2]
  </code></pre>
  
  <p>i am fairly new to java and its casting ect confuses me a bit having come from AS3</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>So following AKhill's answer below i have edited my <code>GLSurfaceView</code> to accept an ArrayList as shown below.  But the <code>MarkerCustom</code> Class needs to be created from each listed in that ArrayList in the constructor in a manner that its is accessible in the <code>onSurfaceCreate</code> and the <code>onDrawFrame</code> method of the <code>GLSurfaceView</code>  </p>
  
  <p>Please see those methods and the for loops/comments in this class below:</p>
  
  <pre><code>public class GLLayer extends GLSurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback, Renderer {
  
      private Context context;
  
      ArrayList &lt;MarkerCustom&gt; locationTags;
  
      private PhoneOrientation phoneOri;
  
  
      public GLLayer(Context context, int orientation, ArrayList&lt;MarkerCustom&gt; custMarkers) {
          super(context);
          locationTags = custMarkers;
  
          this.context = context;
  
          phoneOri=new PhoneOrientation(context); // sensor manager and interpreter
  
           for(int i =0; i&lt;locationTags.size(); i++){
  
              //Need to create a an instance of each MarkerCustom
              // something like MarkerCustom locationTags[i]; = new MarkerCustom (its params);
          }
          this.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
          this.getHolder().setFormat(PixelFormat.TRANSLUCENT);
  
          this.setRenderer(this);
          phoneOri.start(context, orientation);
  
      }
  
      @Override
      public void onDrawFrame(GL10 gl) {
          gl.glEnable(GL10.GL_TEXTURE_2D);
  
          gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
  
          gl.glLoadIdentity();
  
          GLU.gluLookAt(gl,0, 0, 0, 0, 0, 0, 0, 0, 0);
  
          float floatMat[]=phoneOri.getMatrix();
  
          gl.glMatrixMode(GL10.GL_MODELVIEW);
  
  
          gl.glLoadMatrixf(floatMat, 0);
  
  
          for(int i=0;i&lt;loacationTags.size();i++){
              gl.glPushMatrix();
  
              //locationTags[i].draw(gl);
              gl.glLoadMatrixf(floatMat,0);
          }
  
  
           gl.glPushMatrix();
  
      }
  
      @Override
      public void onSurfaceChanged(GL10 gl, int width, int height) {
        if(height == 0) {                    
          height = 1;                         
          }
          float ratio = (float) width / height;
          gl.glViewport(0, 0, width, height);     
          gl.glMatrixMode(GL10.GL_PROJECTION);    
          gl.glLoadIdentity();                    
  
          GLU.gluPerspective(gl, 35.0f, (float)width / (float)height, 5.0f, 200.0f);
          gl.glMatrixMode(GL10.GL_MODELVIEW);     
          gl.glLoadIdentity();                    
  
          GLU.gluLookAt(gl, 0, 1.0f, 5.0f, 0, 0, 0, 0, 1.0f, 0);
  
  
      }
  
      @Override
      public void onSurfaceCreated(GL10 gl, EGLConfig arg1) {
  
          for(int i=0;i&lt;locationTags.size();i++){
              //call each MarkerCustom's loadGLTexture Method
                  //locationTags[i].loadGLTexture(gl, this.context);
          }
  
  
          gl.glEnable(GL10.GL_TEXTURE_2D);            
          gl.glShadeModel(GL10.GL_SMOOTH);            
          gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);    
          gl.glClearDepthf(1.0f);                     
          gl.glEnable(GL10.GL_DEPTH_TEST);           
          gl.glDepthFunc(GL10.GL_LEQUAL);             
  
  
          gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_SMOOTH);
  
      }
  
      @Override
      public void onPreviewFrame(byte[] data, Camera camera) {
  
  
      }
  
  
  }
  </code></pre>
  
  <p><strong>And Just for reference here is my <code>MarkerCustom</code> class</strong></p>
  
  <pre><code>public class MarkerCustom {
  
      public float xPos;
      public float yPos;
      public float zPos;
      public float yaw;
      public float pitch;
      public Bitmap tagImage;
  
      private FloatBuffer vertexBuffer;   // buffer holding the vertices
      private float vertices[] = {
              0.0f, -10.0f, -10.0f,        // V1 - bottom left
              0.0f, -10.0f, 10.0f,        // V2 - top left
              0.0f, 10.0f, -10.0f,        // V3 - bottom right
              0.0f, 10.0f, 10.0f         // V4 - top right
  
      };
  
      private FloatBuffer textureBuffer;  // buffer holding the texture coordinates
      private float texture[] = {
              // Mapping coordinates for the vertices
              0.0f, 1.0f,     // top left     (V2)
              0.0f, 0.0f,     // bottom left  (V1)
              1.0f, 1.0f,     // top right    (V4)
              1.0f, 0.0f      // bottom right (V3)
  
      };
  
  
      public MarkerCustom(float x, float y, float z, float yawAngle, float pitchAngle, Bitmap bitmap) {
  
          xPos = x;
          yPos = y;
          zPos = z;
          yaw = yawAngle;
          pitch = pitchAngle;
          tagImage = bitmap;
  
          ByteBuffer byteBuffer = ByteBuffer.allocateDirect(vertices.length * 4);
          byteBuffer.order(ByteOrder.nativeOrder());
          vertexBuffer = byteBuffer.asFloatBuffer();
          vertexBuffer.put(vertices);
          vertexBuffer.position(0);
  
          byteBuffer = ByteBuffer.allocateDirect(texture.length * 4);
          byteBuffer.order(ByteOrder.nativeOrder());
          textureBuffer = byteBuffer.asFloatBuffer();
          textureBuffer.put(texture);
          textureBuffer.position(0);
  
      }
      /** The texture pointer */
      private int[] textures = new int[1];
  
      public void loadGLTexture(GL10 gl, Context context) {
          // loading texture
          // Enable blending using premultiplied alpha.
          gl.glEnable(GL10.GL_BLEND);
          gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);
  
  
  
          // generate one texture pointer
          gl.glGenTextures(1, textures, 0);
          // ...and bind it to our array
          gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
  
          // create nearest filtered texture
          gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
          gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
  
          // Use Android GLUtils to specify a two-dimensional texture image from our bitmap
          GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, tagImage, 0);
  
          // Clean up
          tagImage.recycle();
      }
      public void draw(GL10 gl) {
          // bind the previously generated texture
          gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
  
          // Point to our buffers
          gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
          gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
  
          // Set the face rotation
          gl.glFrontFace(GL10.GL_CW);
  
          // Point to our vertex buffer
          gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
          gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
  
          // Draw the vertices as triangle strip
          gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length / 3);
  
          //Disable the client state before leaving
          gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
          gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
  
      }
  
  }
  </code></pre>