如何引用带有索引的R.id?

时间:2014-06-29 19:16:52

标签: android for-loop android-edittext

我的activity.java文件中有这个。

    text[0] = (EditText) findViewById(R.id.editText2);
    text[1] = (EditText) findViewById(R.id.editText3);
    text[2] = (EditText) findViewById(R.id.editText4);
    text[3] = (EditText) findViewById(R.id.editText5);
    text[4] = (EditText) findViewById(R.id.editText6);
    text[5] = (EditText) findViewById(R.id.editText7);
    text[6] = (EditText) findViewById(R.id.editText8);
    text[7] = (EditText) findViewById(R.id.editText9);

如何用for循环编写它。

 for(int i=o;i<8;i++)
 text[i] = (EditText) findViewById(R.id.<what here>);

如何在这里引用带索引的edittext?

3 个答案:

答案 0 :(得分:0)

您可以使用常量数组。

// in your class 
private static final int[] TEXT_IDS = { R.id.editText2, R.id.editText3, ... , R.id.editText9};

//initializing
for(int i = o; i < TEXT_IDS.length; i++)
    text[i] = (EditText) findViewById(TEXT_IDS[i]);

答案 1 :(得分:0)

您可以使用getIdentifier()

来实现此目的
for(int i=0; i<8; i++) {
   for(int j=0; j<8; j++) {
    String editTextID = "btn" + i + "-" + j;
    int resID = getResources().getIdentifier(editTextID
    ,"id", "com.example.yourpackagename");
    buttons[i][j] = ((EditTextID) findViewById(resID));
   }
}

答案 2 :(得分:0)

你可以尝试类似下面的答案,这是从here逐字逐句采纳的。

import java.lang.reflect.Field;
/* ... */

for (int i = 1; i < 16; i++) {
    int id = R.id.class.getField("s" + i).getInt(0);
    tv[i] = (TextView)findViewById(id);
    tv[i].setTypeface(face);
    tv[i].setClickable(true);
    tv[i].setOnClickListener(clickListener);
}