Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing Imageview on button dynamically

In my application, I have button and ImageView.

Here when i press button i want to change ImageView. I have 5 images in my drawable folder. On press button ImageView changes images one by one based on button click. I want it's solution.

Grateful to anyone that can help.

like image 562
Sanjay Bhimani Avatar asked Oct 10 '13 08:10

Sanjay Bhimani


2 Answers

Maintain an array of image ids and inside onClick, set images using id from the array, then increment index.

Eg:-

ArrayList<Integer> ids=new ArrayList<Integer>();
        ids.add(R.drawable.image1);
        ids.add(R.drawable.image2);
        ids.add(R.drawable.image3);
        ids.add(R.drawable.image4);
        ids.add(R.drawable.image5);
Int index=0
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
if(index<ids.size()){
      imageview.setImageResource(ids.get(index));
       index++;
   }
 else index=0;
 }
 });
like image 164
Nizam Avatar answered Oct 16 '22 17:10

Nizam


As @Nizam said just maintain an array of id and load dinamically the image in the onClick(). Instead of the Random use a field variable and increment it. Be careful to the array length!

final int[] ids = new int[] { R.drawable.img1, R.drawable.img2 };
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int randomId = new Random().nextInt(ids.length);
        ImageView imageView = (ImageView) findViewById(R.id.imageview);
        imageView.setImageDrawable(getResources().getDrawable(randomId));
    }
});
like image 4
Enrichman Avatar answered Oct 16 '22 17:10

Enrichman