Androidでのユーザー入力に応じてEditTextを正常に作成し、setId()
メソッドを使用して一意のIDを割り当てました。
次に、ユーザーがボタンをタップしたときに動的に作成されたEditText
sから値を取得し、それらすべてを文字列変数に格納することです。つまり、id '1'のEditTextからの値は、EditTextの数に応じて、String型のstr1に保存する必要があります。
getid()
およびgettext().toString()
メソッドを使用していますが、少し注意が必要です... EditTextの各値をString変数に割り当てることはできません。それをしようとすると、NullPointerException
が発生し、ユーザー入力データが表示されない場合は、トーストで表示します。
Heres、コード:
EditText ed;
for (int i = 0; i < count; i++) {
ed = new EditText(Activity2.this);
ed.setBackgroundResource(R.color.blackOpacity);
ed.setId(id);
ed.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
linear.addView(ed);
}
各EditTextから異なる文字列変数に値を渡すにはどうすればよいですか?サンプルコードを手伝ってくれる人がいれば、それは素晴らしいことです。
すべての繰り返しでed
変数を書き換えているため、ループが終了すると、ed
は最後に作成したEditTextインスタンスのみを指します。
すべてのEditTextへのすべての参照を保存する必要があります。
EditText ed;
List<EditText> allEds = new ArrayList<EditText>();
for (int i = 0; i < count; i++) {
ed = new EditText(Activity2.this);
allEds.add(ed);
ed.setBackgroundResource(R.color.blackOpacity);
ed.setId(id);
ed.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
linear.addView(ed);
}
allEds
リストには、すべてのEditTextへの参照が保持されるため、それを繰り返してすべてのデータを取得できます。
更新:
リクエストごと:
String[] strings = new String[](allEds.size());
for(int i=0; i < allEds.size(); i++){
string[i] = allEds.get(i).getText().toString();
}
また、EditTextの配列を取得することにより、このようにすることもできます。すべてのEditTextへの参照をすべて保存する必要があります。
EditText ed[] = new EditText[count];
for (int i = 0; i < count; i++) {
ed[i] = new EditText(Activity2.this);
ed[i].setBackgroundResource(R.color.blackOpacity);
ed[i].setId(id);
ed[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
linear.addView(ed[i]);
}
forループを使用して、EditTextから値を取得できます。
for(int i = 0; i < ed.length; i++){
Log.d("Value ","Val " + ed[i].getText());
}
JSON文字列からTableRows内に動的TextViewを生成するforループがあります。私がやったことは次のとおりです。
// Generate Dynamic tablerows and set a unique id
//m_jArry is a JSON Array
for(int i = 0; i < m_jArry.length(); i++)
{
jo_inside = m_jArry.getJSONObject(i);
TableRow row = new TableRow(getApplicationContext())
row.setId(jo_inside.getInt("id"));
...
findViewById(row.getId())
...
}
FindViewById(row.getId())を使用して、アプリの動的TextViewテキストデータをEditTextフィールドに設定しています。 JSONを理解していない人のために、Androidプラットフォームについての良い説明がここにあると確信しています)ここにはいくつかの良いチュートリアルがあります。 Android newbie、しかし、これがあなたの一部に役立つことを願っています。
これは、EditText.gettext()がEditableを返すため、toStringが機能しないためです。 String.valueOf(edittext.gettext)を試してください。
正しいEditTextが問題ないことを確認したら。 2テストを文字列denコードに渡す方法は
EditText t = new EditText(this);
t.setText("test");// obviously in ur case it will be intered by user
String s = String.valueOf(t.getText());
System.out.println(s);
それ以外の場合は、setTeg(Edittext)nを使用し、ボタンのクリック時にgetTagでeditTextを取得します。
String[] strings = new String[allEds.size()];
String[] strings1 = new String[allEdn.size()];
for(int i=0; i < allEds.size(); i++){
strings[i] = allEds.get(i).getText().toString();
strings1[i] = allEdn.get(i).getText().toString();
System.out.println("data in edittext name is " +strings[i]);
System.out.println("data in edittext number is " +strings1[i]);
}
複数の編集テキスト用