¿Cómo obtener datos de cada EditText creado dinámicamente en Android?

He creado con éxito EditTexts dependiendo de la entrada del usuario en Android, y también les he asignado identificaciones únicas usando el método setId() .

Ahora lo que quiero hacer es obtener valores de EditText creado dinámicamente cuando el usuario toca un botón, y luego almacenarlos en variables de cadena. es decir, el valor de EditText con id ‘1’ debe guardarse en str1 de tipo String, y así sucesivamente dependiendo del número de EditTexts.

Estoy usando los getid() y gettext().toString() pero parece un poco complicado … No puedo asignar cada valor de EditText a una variable String. Cuando trato de hacer eso, ocurre una NullPointerException , y si no es el caso donde no se muestran los datos de entrada del usuario, lo despliego en un brindis.

Heres, el código:

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

¿Cómo paso ahora el valor de cada EditText a cada variable de cadena diferente? Si algún cuerpo pudiera ayudar con un código de muestra, estaría bien.

En cada iteración está reescribiendo la variable ed , por lo que cuando termina el ciclo ed solo apunta a la última instancia de EditText que ha creado.

Debe almacenar todas las referencias a todos los 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); } 

Ahora allEds listas de allEds contienen referencias a todos los EditTexts, por lo que puede iterar y obtener todos los datos.

Actualizar:

Según la petición:

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

También puede hacer esto tomando una Matriz de Editar Texto. Debe almacenar todas las referencias a todos los 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]); } 

y puede usar for loop para obtener el valor de EditText.

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

Tengo un bucle para generar TextViews dynamics en TableRows a partir de una cadena JSON. Esto es lo que hice:

 // 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()) ... } 

Estoy utilizando findViewById (row.getId ()) para establecer los datos de texto textuales de TextView en campos EditText en mi aplicación. Para aquellos de ustedes que no entienden JSON, hay varios buenos tutoriales por ahí (estoy seguro de que hay grandes explicaciones aquí en Stack Overflow) para la plataforma Android. Todavía soy un novato de Android, pero espero que esto sea útil para algunos de ustedes.

esto es porque EditText.gettext () devuelve Editable, por lo que toString no funcionará. prueba String.valueOf (edittext.gettext).

si estás seguro de que estás d correcto EditText pero prob. es cómo 2 pasar su prueba al código de cadena de 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); 

de lo contrario, use setTeg (Edittext) n get editText con getTag al hacer clic en el botón.

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

para el texto de edición múltiple