由于整数赋值导致的Android迭代错误

时间:2014-02-27 16:38:06

标签: java android textview

我正在尝试迭代26个textViews(每个字母的一个字母)。下面是我尝试的,我得到以下错误:

java.lang.NumberFormatException: Invalid int: "R.id.A"".

我知道问题是我如何分配整数但不确定如何纠正。

private void setupKeyBoard() {

    for(char letter = 'A'; letter <= 'Z';letter ++){

        int letterID = Integer.parseInt("R.id."+ letter); //This line is my issue
        Log.e("LetterID", Integer.toString(letterID));

        final TextView textView = (TextView) getView().findViewById(letterID);

        textView.setTextSize(20 * getResources().getDisplayMetrics().density);
        textView.setText(letter);
        final char finalLetter = letter;

        textView .setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                checkGuess(finalLetter);
                textView.setClickable(false);
                textView.setAlpha((float) .1);
            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

Integer.parseInt不是你想要的。

您想要实现的目标可以使用getIdentifier

完成
int letterID = getResources().getIdentifier(String.valueOf(letter), "id", getPackageName());

请注意,这个速度很慢。您最好的选择可能是将这些ID存储在int数组中并循环显示它。

int[] arr = {R.id.A, R.id.B, ... };

for(char letter = 'A'; letter <= 'Z';letter ++){
    final TextView textView = (TextView) getView().findViewById(arr[letter-'A']);
    .....
}