如何使用For循环在android中获取多个EditText值

Jag*_*gan 1 arrays android textview android-edittext

在我的应用程序中,我有10个Edittext和10个TextView

我已经为EditText和TextView创建了实例

String[] messageText=new String[10];
String[] messageEdit=new String[10];
TextView oTextView1 = (TextView) findViewById(R.id.Tab_common1_EditText);
    TextView oTextView2 = (TextView) findViewById(R.id.Tab_common2_EditText);
    TextView oTextView3 = (TextView) findViewById(R.id.Tab_common3_EditText);
    TextView oTextView4 = (TextView) findViewById(R.id.Tab_common4_EditText);
    TextView oTextView5 = (TextView) findViewById(R.id.Tab_common5_EditText);
    TextView oTextView6 = (TextView) findViewById(R.id.Tab_common6_EditText);
    TextView oTextView7 = (TextView) findViewById(R.id.Tab_common7_EditText);
    TextView oTextView8 = (TextView) findViewById(R.id.Tab_common8_EditText);
    TextView oTextView9 = (TextView) findViewById(R.id.Tab_common9_EditText);
    TextView oTextView10 = (TextView) findViewById(R.id.Tab_common10_EditText);

    EditText oEditTextHiden1 = (EditText) findViewById(R.id.Tab_Hidencommon1_EditText);
    EditText oEditTextHiden2 = (EditText) findViewById(R.id.Tab_Hidencommon2_EditText);
    EditText oEditTextHiden3 = (EditText) findViewById(R.id.Tab_Hidencommon3_EditText);
    EditText oEditTextHiden4 = (EditText) findViewById(R.id.Tab_Hidencommon4_EditText);
    EditText oEditTextHiden5 = (EditText) findViewById(R.id.Tab_Hidencommon5_EditText);
    EditText oEditTextHiden6 = (EditText) findViewById(R.id.Tab_Hidencommon6_EditText);
    EditText oEditTextHiden7 = (EditText) findViewById(R.id.Tab_Hidencommon7_EditText);
    EditText oEditTextHiden8 = (EditText) findViewById(R.id.Tab_Hidencommon8_EditText);
    EditText oEditTextHiden9 = (EditText) findViewById(R.id.Tab_Hidencommon9_EditText);
    EditText oEditTextHiden10 = (EditText) findViewById(R.id.Tab_Hidencommon10_EditText);
Run Code Online (Sandbox Code Playgroud)

现在我需要获取所有TextView getText()和EditText getText()

我尝试了一些方法,但它没有用

 for (int i = 0; i < 10; i++) {

        messageText[i] = (oTextView+i).getText().toString();//it says oTextView cannot be resolved to a variable
        messageEdit[i] = (oEditTextHiden+i).getText().toString();
      }
      Log.i("message", "message :"+Arrays.deepToString(messageText)+" "+Arrays.deepToString(messageEdit));
Run Code Online (Sandbox Code Playgroud)

Jua*_*tés 7

存储EditText和循环的id ,因为View ID是整数,你可以这样轻松地做到:

ArrayList<String> values = new ArrayList<String>();
int[] ids = new int[]{R.id.editText1,R.id.editText2,R.id.editText3};//and so on

for(int id : ids){
    EditText t = (EditText) findViewById(id);
    values.add(t.getText().toString());
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想要文本而不想对EditText视图本身执行任何其他操作,则可以将其设置为一行:

for(int id : ids) values.add(((EditText)findViewById(id)).getText().toString());
Run Code Online (Sandbox Code Playgroud)