2013-01-02 352 views
-1

我一直在使用一個循環加了一些EditTexts,如何獲得的EditText ID

textFieldsLayout =(LinearLayout中)findViewById(R.id.LinearLayout2);

for(int i=1; i <= 8; i++){ 

     final EditText ed = new EditText(this); 

     ed.setText("" + i); 

     ed.setInputType(2); 

     ed.setLayoutParams(lparams); 

     textFieldsLayout.addView(ed); 
    } 
} 

在此之後,我想要獲取用戶添加到EditText字段中的文本,但我堅持如何做到這一點。我將如何獲得每個這些EditText字段的Id?

感謝,奧利

回答

1

只需將它們添加到集合中,當您創建它們時,您可以通過索引或鍵或循環或其他方式輕鬆地引用它們。

EditText[] etCollection = new EditText[8]; 

.......... 

    textFieldsLayout = (LinearLayout) findViewById(R.id.LinearLayout2); 
    for(int i=1; i <= 8; i++){ 
     final EditText ed = new EditText(this); 
     ed.setText("" + i); 
     ed.setInputType(2); 
     ed.setLayoutParams(lparams); 
     textFieldsLayout.addView(ed); 
     etCollection[i] = ed; <------ adding them to the collection 
    } 
} 
+0

這工作完美,謝謝! –

0

你必須在每一個你創建辦ed.setId(id);id應該是要找到每一個獨特的。當你去找一個

EditText ed = (EditText)findViewById(id); 

你將不得不跟蹤你的id在某個地方。

或者,您可以保留您創建並通過列表運行的EditTexts列表以獲取每個文本。

+0

我正要回答是相同的,但(我的好奇心),如何能夠確保ID不會與一些自動ID碰撞從@給+ ID? – fedepaol

+0

我不認爲你可以。保留它們的列表可能是更好的方法。 – Ralgha

+0

你的意思是一個資源文件中的列表,對吧? – fedepaol