0

I have 5 Imageview namely Mycards_Slot1,Mycards_Slot2,Mycards_Slot3,Mycards_Slot4 and Mycards_Slot5 in a switch statement, can i use a String in setting the image resource in the imageview rather than retyping them and using them for other imageview.please help me on this thanks.

 switch(Frank_Share_counter) {
        case 1:
            MyCards_Slot1.setVisibility(View.VISIBLE);
            if (Frank_CS1==one){MyCards_Slot1.setImageResource(R.drawable.need_one);}//need(5)
            if (Frank_CS1==two){MyCards_Slot1.setImageResource(R.drawable.need_two);}
            if (Frank_CS1==three){MyCards_Slot1.setImageResource(R.drawable.need_three);}
            if (Frank_CS1==four){MyCards_Slot1.setImageResource(R.drawable.need_four);}
            if (Frank_CS1==five){MyCards_Slot1.setImageResource(R.drawable.need_five);}
            if (Frank_CS1==six){MyCards_Slot1.setImageResource(R.drawable.circle_one);}//circle(13)
            if (Frank_CS1==seven){MyCards_Slot1.setImageResource(R.drawable.circle_two);}
            if (Frank_CS1==eight){MyCards_Slot1.setImageResource(R.drawable.circle_three);}
            if (Frank_CS1==nine){MyCards_Slot1.setImageResource(R.drawable.circle_four);}
            if (Frank_CS1==ten){MyCards_Slot1.setImageResource(R.drawable.circle_five);}
            if (Frank_CS1==eleven){MyCards_Slot1.setImageResource(R.drawable.circle_seven);}
            if (Frank_CS1==twelve){MyCards_Slot1.setImageResource(R.drawable.circle_eight);}
            if (Frank_CS1==thirteen){MyCards_Slot1.setImageResource(R.drawable.circle_nine);}
            if (Frank_CS1==fourteen){MyCards_Slot1.setImageResource(R.drawable.circle_ten);}
            if (Frank_CS1==fifteen){MyCards_Slot1.setImageResource(R.drawable.circle_eleven);}
            if (Frank_CS1==sixteen){MyCards_Slot1.setImageResource(R.drawable.circle_twelve);}
            if (Frank_CS1==seventeen){MyCards_Slot1.setImageResource(R.drawable.circle_thieteen);}
            if (Frank_CS1==eighteen){MyCards_Slot1.setImageResource(R.drawable.cross_one);}//cross(9)
            if (Frank_CS1==nineteen){MyCards_Slot1.setImageResource(R.drawable.cross_two);}
            if (Frank_CS1==twenty){MyCards_Slot1.setImageResource(R.drawable.cross_three);}
            if (Frank_CS1==twenty_one){MyCards_Slot1.setImageResource(R.drawable.cross_five);}
            if (Frank_CS1==twenty_two){MyCards_Slot1.setImageResource(R.drawable.cross_seven);}
            if (Frank_CS1==twenty_three){MyCards_Slot1.setImageResource(R.drawable.cross_ten);}
            if (Frank_CS1==twenty_four){MyCards_Slot1.setImageResource(R.drawable.cross_eleven);}
            if (Frank_CS1==twenty_five){MyCards_Slot1.setImageResource(R.drawable.cross_thirteen);}
            if (Frank_CS1==twenty_six){MyCards_Slot1.setImageResource(R.drawable.cross_fourteen);}
            if (Frank_CS1==twenty_seven){MyCards_Slot1.setImageResource(R.drawable.square_one);}//square(11)
            if (Frank_CS1==twenty_eight){MyCards_Slot1.setImageResource(R.drawable.square_two);}
            if (Frank_CS1==twenty_nine){MyCards_Slot1.setImageResource(R.drawable.square_three);}
            if (Frank_CS1==thirty){MyCards_Slot1.setImageResource(R.drawable.square_five);}
            if (Frank_CS1==thirty_one){MyCards_Slot1.setImageResource(R.drawable.square_seven);}
            if (Frank_CS1==thirty_two){MyCards_Slot1.setImageResource(R.drawable.square_eight);}
            if (Frank_CS1==thirty_three){MyCards_Slot1.setImageResource(R.drawable.square_ten);}
            if (Frank_CS1==thirty_four){MyCards_Slot1.setImageResource(R.drawable.square_eleven);}
            if (Frank_CS1==thirty_five){MyCards_Slot1.setImageResource(R.drawable.square_twelve);}
            if (Frank_CS1==thirty_six){MyCards_Slot1.setImageResource(R.drawable.square_thirteen);}
            if (Frank_CS1==thirty_seven){MyCards_Slot1.setImageResource(R.drawable.star_one);}//star(7)
            if (Frank_CS1==thirty_eight){MyCards_Slot1.setImageResource(R.drawable.star_two);}
            if (Frank_CS1==thirty_nine){MyCards_Slot1.setImageResource(R.drawable.star_three);}
            if (Frank_CS1==forty){MyCards_Slot1.setImageResource(R.drawable.star_four);}
            if (Frank_CS1==forty_one){MyCards_Slot1.setImageResource(R.drawable.star_five);}
            if (Frank_CS1==forty_two){MyCards_Slot1.setImageResource(R.drawable.star_seven);}
            if (Frank_CS1==forty_three){MyCards_Slot1.setImageResource(R.drawable.star_eight);}
            if (Frank_CS1==forty_four){MyCards_Slot1.setImageResource(R.drawable.triangle_one);}//Triangle(12)
            if (Frank_CS1==forty_five){MyCards_Slot1.setImageResource(R.drawable.triangle_two);}
            if (Frank_CS1==forty_six){MyCards_Slot1.setImageResource(R.drawable.triangle_three);}
            if (Frank_CS1==forty_seven){MyCards_Slot1.setImageResource(R.drawable.triangle_four);}
            if (Frank_CS1==forty_eight){MyCards_Slot1.setImageResource(R.drawable.triangle_five);}
            if (Frank_CS1==forty_nine){MyCards_Slot1.setImageResource(R.drawable.triangle_seven);}
            if (Frank_CS1==fifty){MyCards_Slot1.setImageResource(R.drawable.triangle_eight);}
            if (Frank_CS1==fifty_one){MyCards_Slot1.setImageResource(R.drawable.triangle_ten);}
            if (Frank_CS1==fifty_two){MyCards_Slot1.setImageResource(R.drawable.triangle_eleven);}
            if (Frank_CS1==fifty_three){MyCards_Slot1.setImageResource(R.drawable.triangle_twelve);}
            if (Frank_CS1==fifty_four){MyCards_Slot1.setImageResource(R.drawable.triangle_thirteen);}
            if (Frank_CS1==fifty_five){MyCards_Slot1.setImageResource(R.drawable.triangle_fourteen);}
            if (Frank_CS1==fifty_six){MyCards_Slot1.setImageResource(R.drawable.circle_fourteen);}//by mistake
            if (Frank_CS1==fifty_seven){MyCards_Slot1.setImageResource(R.drawable.square_fourteen);}//by mistake

            break;
        default:
            Toast.makeText(this, "Could not find song", Toast.LENGTH_LONG).show();
    }
  • Does this answer your question? [How to set an imageView's image from a string?](https://stackoverflow.com/questions/5254100/how-to-set-an-imageviews-image-from-a-string) – Mike M. May 02 '20 at 20:44
  • You can use the `Resources#getIdentifier()` method with your image names to get the corresponding resource IDs to use with `setImageResource()`. There are examples on the linked post above. – Mike M. May 02 '20 at 20:45
  • but that will mean getting the resource identifier for all imageview and images that will be more difficult than reusing the switch statement – franklyn omeben May 02 '20 at 20:52
  • I'm not sure what you mean. Your question states "can i use a String in setting the image resource in the imageview". That's exactly what that will allow. – Mike M. May 02 '20 at 20:58
  • i meant the imageview, something like this string chageimg="MyCards" if (Frank_CS1==one){changeimg.setImageResource(R.drawable.need_one);} – franklyn omeben May 02 '20 at 21:07
  • Oh, you want to find the `ImageView` itself with the `String`, yeah? Not the image? Well, you could do it with the same method; e.g., `String changeimg = "MyCards" + case_number;`, `int id = getResources().getIdentifier(changeimg, "id", getPackageName());`, `ImageView img = findViewById(id);`. However, that's unnecessarily roundabout. Instead, you could simply use an array or `List` of `ImageView`s; e.g., `ImageView[] imgs = new ImageView[5];`, `imgs[0] = MyCards_Slot1;`, etc. Then you can just use `imgs[case_number]`. – Mike M. May 02 '20 at 21:17

1 Answers1

0

I am answering based on how I understand your question:

I assume you want to reference the drawables somehow, well you can set the resource id in an int

//reference them like this:
int need_one = R.drawable.need_one;
int need_two = R.drawable.need_one;
int need_three = R.drawable.need_three;
//.......
//complete the rest by yourself



//and just use them like this:


.........

if (Frank_CS1==one){MyCards_Slot1.setImageResource(need_one);}
if (Frank_CS1==two){MyCards_Slot1.setImageResource(need_two);}
if (Frank_CS1==three){MyCards_Slot1.setImageResource(need_three);}
.....
....
....
Hasan Bou Taam
  • 4,017
  • 2
  • 12
  • 22