¿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 ID único usando el método setId() .

Ahora lo que quiero hacer es obtener valores de la EditText dinámicamente creado s cuando el usuario toque un botón, a continuación, almacenar todos ellos en las variables de cadena. Es decir, el valor de EditText que tiene id '1' debe guardarse en str1 de tipo String, y así sucesivamente dependiendo del número de EditTexts.

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

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 puedo pasar el valor de cada EditText a cada variable de cadena diferente? Si algún cuerpo podría ayudar con un código de ejemplo sería bueno.

En cada iteración usted está reescribiendo la variable ed , por lo que cuando el bucle está terminado ed sólo apunta a la última instancia EditText que creó.

Debe guardar todas las referencias a todos los EditTexts:

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

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 EditText. Debe guardar 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 usted puede utilizar para el lazo para conseguir el valor del EditText.

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

Tengo un para el lazo que genera textViews dinámicos dentro de TableRows de una secuencia de 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 TextView dinámicos a 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á. Intente String.valueOf (edittext.gettext).

Si u seguro que ur conseguir d derecho EditText pero prob. Es cómo pasar 2 su prueba a la cadena de código den es

  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 por getTag en el botón de clic.

  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 múltiples edittext

  • Java: ¿Cómo comprobar si el objeto es nulo?
  • Importar código fuente de Android en eclipse
  • Obtenga el país de un determinado huso horario de Java
  • Cómo borrar el historial visitado (CSS) de un WebView de Android?
  • Extracto de Android WebView HTML
  • BadTokenException: No se puede agregar la ventana
  • Uso de la forma dibujable como mi fondo xml
  • Desactivado Llamar a 'ejecutar (Params ...)' como miembro de tipo raw 'android.os.AsyncTask'
  • No se puede encontrar el nombre de la clase de actividad predeterminada
  • La biblioteca appcompat importada tiene errores
  • Añade más espacio entre los elementos de Android Spinner sin estilo personalizado?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.