Ribisl
Ribisl

Reputation: 80

Place Views in different positions

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

Answers (2)

Ribisl
Ribisl

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

Hobo Joe
Hobo Joe

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

Related Questions