我正在尝试迭代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);
}
});
}
}
答案 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']);
.....
}