2016-08-02 10 views
0

私は約50のEditTextフィールドを持っており、ループを使ってその値を取得したいと思います。個別に以下のような値を取得すると、正常に動作します:Android - すべての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

テキストビューの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

私はあなたと仮定した場合にはll(などのViewGroupなどとして、あまりにもLayout以外の構造のために働く必要があります)と呼ばれるレイアウト内のこれらEditTextsのすべてを持っている:

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

関連する問題