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); 
    }

現時点では、このような方法があります。しかし、26文字になると、それは多くのifになります。

どうすればそれを変更できるか、誰にもわかりませんか?私はこのようなことをやってみましたが、とにかく setImageResource には int が必要でした。

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);
}
4

2 に答える 2

0

この方法で初期startS化できます:

int startS =  getResources().getIdentifier(letter, "drawable","com.yourpackage.name");
于 2012-04-16T20:25:38.550 に答える
0

画像のリソース ID を静的な int 配列に保持し、setImageResource() を呼び出すときにインデックスを付けることができます。以下のコードを参照してください

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);
}
于 2012-04-16T19:44:53.577 に答える