0
public void correctLetter(String Letter, int pos){
    if(letter.equals("a")){ 
          ImageView image = images[pos];
          image.setImageResource(R.drawable.a);
          image.setVisibility(ImageView.VISIBLE); 
    }

At the moment i got a method looking like this. But, when i got 26 letters, thats going to be a lot of ifs.

Anyone got an idea how i can change that? I tried doing something like this, but the setImageResource required int anyways.

public void correctLetter(String letter, int pos) {
        char newLetter = letter.toCharArray()[0];
        String startS = "R.drawable." + letter;
        startS += Character.toString(newLetter);
        ImageView image = images[pos];
        image.setImageResource(startS);
        image.setVisibility(ImageView.VISIBLE);
}
sindrem
  • 1,211
  • 5
  • 24
  • 45

2 Answers2

0

You can keep the resource ids for the images in a static int array and index into it while calling setImageResource(). Please refer to the code below

private static final int charImgIds[] = { R.drawable.a, R.drawable.b, ... , R.drawable.z };
public void correctLetter(String letter, int pos) {
    int letterIndex = letter.toCharArray()[0];
    ImageView image = images[pos];
    image.setImageResource(charImgIds[letterIndex]);
    image.setVisibility(ImageView.VISIBLE);
}
Anamoy
  • 171
  • 4
0

You can init startS by this way:

int startS =  getResources().getIdentifier(letter, "drawable","com.yourpackage.name");
Ilya Blokh
  • 11,923
  • 11
  • 52
  • 84