Reputation: 80
I want to place Icons (Imageviews) on a bigger Imageview. Something like this:
ArrayList<Icon> icons = new ArrayList<Icons>;
for(Icon icon : icons){
ImageView iv = new ImageView(this);
iv.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
iv.setImageBitmap(icon.getBitMap());
iv.setPosition(icon.getX(),icon.getY()); //Thats the line I need to know
myLayout.addView(iv);
}
but the problem is I can't find a way to make it efficient and knowing which imageview was clicked.
Upvotes: 0
Views: 48
Reputation: 80
I found a solution for my positioning problem you can just do:
ImageView imageView = (ImageView)findViewById(R.id.imageView);
imageView.setX(xPosition);
imageView.setY(YPosition);
The question with, which Image was clicked, answered @Hobo Joe very nicely, with this sample!
ArrayList<Icon> icons = new ArrayList<Icons>;
for(int i = 0; i < icons.size(); i++) {
Icon icon = icons.get(i);
ImageView iv = new ImageView(this);
iv.setTag(i);
iv.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
iv.setImageBitmap(icon.getBitMap());
iv.setOnClickListener(new View.OnClickListener({
@Override
public void onClick(View view) {
iconClicked(view);
}
});
myLayout.addView(iv);
}
public void iconClicked(View view) {
switch((Integer) view.getTag())
case 0:
//...
break;
case 1:
//...
break;
default:
break;
}
}
Upvotes: 0
Reputation: 902
To figure out which view was clicked, apply a tag to it and then check the tag of the view passed with onClick()
ArrayList<Icon> icons = new ArrayList<Icons>;
for(int i = 0; i < icons.size(); i++) {
Icon icon = icons.get(i);
ImageView iv = new ImageView(this);
iv.setTag(i);
iv.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
iv.setImageBitmap(icon.getBitMap());
iv.setOnClickListener(new View.OnClickListener({
@Override
public void onClick(View view) {
iconClicked(view);
}
});
myLayout.addView(iv);
}
public void iconClicked(View view) {
switch((Integer) view.getTag())
case 0:
//...
break;
case 1:
//...
break;
default:
break;
}
}
Upvotes: 1