What I am trying to do is create N (in this case 9) copies of the ImageView object R.id.tile
, place each of them at different coordinates on the layout
Edit:
First create a layout with one ImageView with the properties you like
Example:
create file in res/layout/singleimage.xml
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/image2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
android:contentDescription="Sample"/>
And then inflate the ImageView
to get the copies of it like this
View[] tiles = new ImageView[9];
// get reference to LayoutInflater
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for(int i = 0; i<tiles.length; i++) {
//Creating copy of imageview by inflating it
ImageView image = (ImageView) inflater.inflate(R.layout.singleimage, null);
tiles[i] = image;
tiles[i].setId(i);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(-1, 345);
params.leftMargin = 32*2*3;
params.topMargin = 34*2*3;
layout.addView(tiles[i]);
}
You have set id
to i
value here
tiles[i].setId(i);
But you are (incorrectly) trying to get it from your other resource (the one you wanted to 'clone'):
layout.addView(tiles[i] = (ImageView) findViewById(R.id.tile)); // INCORRECT
Instead, set the id
manually as above, and then:
layout.addView(tiles[i]);
And there is no need to call findViewById()