maddy
maddy

Reputation: 4111

Dynamic set image path

In my project, there are a number of images having back and forward images and all images having a common layout. On clicking back and next buttons new images should be displayed.

private int imageCounter = 0;
private ImageView imageView;
private int[] imageArray = {R.drawable.image_w_lbl_0, R.drawable.image_w_lbl_1,};
private int index_count = 0;
@Override
public void onCreate(Bundle savedInstanceState) 
{
    setContentView(R.layout.frame0);//this one is the common parent layout for all imageviews
    super.onCreate(savedInstanceState);
    imageView = new ImageView(this);

    ImageButton next = (ImageButton) findViewById(R.id.next);
    ImageButton back = (ImageButton) findViewById(R.id.back);
    next.setOnClickListener(this);
    back.setOnClickListener(this);

    //show the default image
    this.loadImage(imageArray[0]);

}
@Override
public void onClick(View v) 
{
    int imagePath = 0;
    // TODO Auto-generated method stub
    switch (v.getId())
    {
    case R.id.next:
        if(imageCounter < 25)
        {   
            imagePath = imageArray[index_count];
        }
        imageCounter++;
        break;
    case R.id.back:
        if(imageCounter > 0)
        {
            //imagePath =
        }
        imageCounter--;

        break;      
    }
    this.loadImage(imagePath);
}

private void loadImage(int imagePath)
{
    imageView.setImageResource(imagePath);
}

I am able to see my layout only in the output having back and forward buttons with the black background not an image from my drawable folder.

XML Layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center">

    <ImageButton android:id="@+id/back" android:src="@drawable/btn_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"/>

    <ImageButton 
        android:id="@+id/next"
        android:src="@drawable/btn_next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right" />

</LinearLayout>

Upvotes: 3

Views: 4937

Answers (5)

Lakshmanan
Lakshmanan

Reputation: 1669

Easiest way - Can be consider the below code

We can take advantage of Imageview setImageResource , refer below code for the same. put image in the drawable like the below order

image_1.png, image_2.png, etc.

int imagePosition = 1;                    

int resId = getResources().getIdentifier("image_" + imagePosition, "drawable", getPackageName());
             imageview.setImageResource(resId);

Upvotes: 1

Pranit Kulkarni
Pranit Kulkarni

Reputation: 1

Use ContextCompat to get drawable(Image in your case). This is one of the new ways to set image to your image view.

imageView.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(),
                                                     R.drawable.your_image));

You can use ContextCompat to get colors as well. I use it in my apps and it works properly.

Upvotes: -1

Gajendra Bang
Gajendra Bang

Reputation: 3583

imageView.setImageResource(R.drawable.img1) 

Upvotes: 1

yosh
yosh

Reputation: 3305

int array of images from resources (i.e. res/drawable-mdpi):

Integer[] imageArray = { "R.drawable.img1", "R.drawable.img2" }

...

imageView.setImageResource(imageArray[0]); // displays img1

Upvotes: 3

viv
viv

Reputation: 6177

Not very clear what you are asking, but do you want to do something like this:

imagePath=R.drawable.image_wo_lbl_0;

You can store image path in this way, if you actually want to do this.

Upvotes: 1

Related Questions