Как получить данные из каждого динамически созданного EditText в Android?

Я успешно создал EditTexts в зависимости от ввода пользователя на Android, а также присвоил им уникальный идентификатор с помощью setId() .

Теперь я хочу получить значения из динамически созданного EditText s, когда пользователь нажимает кнопку, а затем сохраняет все из них в строковых переменных. т.е. значение из EditText с идентификатором ‘1’ должно быть сохранено в str1 типа String и т. д. в зависимости от количества EditTexts.

Я использую 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, который вы создали.

Вы должны хранить все ссылки на все EditTexts:

 EditText ed; List allEds = new ArrayList(); 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 содержит ссылки на все EditTexts, поэтому вы можете повторить его и получить все данные.

Обновить:

По запросу:

 String[] strings = new String[](allEds.size()); for(int i=0; i < allEds.size(); i++){ string[i] = allEds.get(i).getText().toString(); } 

Вы также можете сделать это, взяв массив EditText. Вы должны хранить все ссылки на все EditTexts:

 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]); } 

и вы можете использовать для цикла, чтобы получить значение из EditText.

  for(int i = 0; i < ed.length; i++){ Log.d("Value ","Val " + ed[i].getText()); } 

У меня есть цикл for, генерирующий динамические TextViews в TableRows из строки JSON. Вот что я сделал:

 // 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, есть несколько хороших обучающих программ (я уверен, что здесь есть большие объяснения на Stack Overflow) для платформы Android. Я все еще новичок в Android, но надеюсь, что это будет полезно для некоторых из вас.

это потому, что EditText.gettext () возвращает Editable, поэтому toString не будет работать. попробуйте String.valueOf (edittext.gettext).

если и убедитесь, что ур получил d edit Edit, но prob. это то, как 2 пройти тест на строковый ден-код

  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); 

else use setTeg (Edittext) n get editText через getTag при нажатии кнопки.

  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]); } 

для нескольких редакторов

  • Открыть приложение галереи с Android Intent
  • Почему мое раскрывающееся меню переполнения над панелью действий?
  • Код для загрузки видео с Youtube на Java, Android
  • Недопустимый символ в пути по индексу 16
  • Измените значки отмеченных и непроверенных для флажка для Android
  • Android - создание CSV-файла из значений таблицы
  • Как вы имитируете низкую память в эмуляторе Android?
  • не может статически ссылаться на нестатические поля
  • андроид на прослушивателе изменения текста
  • Как создать classы Java из файла WSDL
  • Разница между JSONObject и JSONArray
  • Давайте будем гением компьютера.