2016-08-02 22 views
0

我有大約50個EditText字段,我想用循環獲取它們的值。獲得如下單獨的值正常工作:Android - Loop收集所有editText值

SharedPreferences settings = getSharedPreferences(filename, 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.clear(); //not sure if this is required 

    final EditText t1 = (EditText) findViewById(R.id.text1Value); 
    String T1 = t1.getText().toString(); 
    editor.putstring("text1",T1); 

    final EditText t2 = (EditText) findViewById(R.id.text2Value); 
    String T2 = t2.getText().toString(); 
    editor.putstring("text2", T2); 

    ................................ and so on till EditText t50. 

我試圖通過下面的循環實現這一目標,但不能讓它開始工作。

 for(int x=1; x<50; x++) 
    { 
     EditText et[x] = (EditText) findViewById(R.id.text[x]Value); 
     String t[x] = et[x].getText().toString(); 
     String Ref = "text" + x; 
     editor.putString(Ref, t[x]); 
    } 
+0

呀感謝隊友。儘管如此,仍然不完全處於工作狀態。 – Whiss

+0

不要忘記'提交'或'應用'的變化 – user8

回答

2

您可以嘗試通過創建textview的ID數組並循環遍歷數組。 試試這個:

int[] ids = new int[]{R.id.text1Value,R.id.text2Value,R.id.text3Value};//and so on 
 

 
int i =1; 
 
for(int id : ids){ 
 
    EditText t = (EditText) findViewById(id); 
 
    String Ref = "text" + i; 
 
    editor.putString(Ref, t.getText().toString()); 
 
    i++; 
 
}

0

如果我假設你擁有所有佈局內這些EditTexts叫ll(應該比其他Layout結構工作太,如一個ViewGroup等):

ArrayList<String> values = new ArrayList<String>(); 
for (int i = 0; i < ll.getChildCount(); i++) { 
    if (ll.getChildAt(i) instanceof EditText) { 
     EditText et = (EditText)ll.getChildAt(i); 
     values.add(et.getText().toString()); 
    } 
} 

我的Android有點生鏽,所以如果有什麼問題,請大家道歉,但是無論如何應該給你一個總體想法

0

int[] ids = new int[]{R.id.text1Value,R.id.text2Value,R.id.text3Value};//and so on 
 

 
int i =1; 
 
for(int id : ids){ 
 
    EditText t = (EditText) findViewById(id); 
 
    String Ref = "text" + i; 
 
    editor.putString(Ref, t.getText().toString()); 
 
    i++; 
 
}

private void clearScreen() { 
    int[] _ids = null; 

    _ids = new int[]{R.id.etIdTAtividade, R.id.etNomeTAtividade, R.id.etNmAtividade}; 

    for (int i = 0; i < (_ids.length); i++) { 
     EditText t = (EditText) findViewById(_ids[i]); 
     t.setText(""); 
    } 
} 
+0

歡迎來到StackOverflow!請你可以添加一個描述到這個答案告訴操作你的解決方案是如何工作的? – edcs