|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Ayuda Control Spinner
Hola q tal amigos espero puedan ayudarme sucede que quiero llenar los elementos de un Spinner mediante un Edit Text cada vez q agregue una cadena en el EditText ese valor sea pasado o visualizado al Spinner.
Espero puedan ayudarme y orientame si esto puede ser posible de realizar. Por su comprension Gracias |
|
#2
|
||||
|
||||
Hola, que tal?
Primero crea los siguiente en el layout correspondiente. Yo hice una que tiene un EditText, un boton y un spiner. <Spinner android:id="@+id/spinner_datos" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> <EditText android:id="@+id/et_insert_datos" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:ems="10" android:text="" /> FIJATE QUE EL VALOR QUE LE ASIGNAMOS AL TEXTO DEL EDITTEXT ES "", <Button android:id="@+id/bt_insertar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/et_insert_datos" android:layout_centerHorizontal="true" android:text="Insertar" /> El la activity tendras que poner dentro del oncreate: IDENTIFICAR LOS VIEWS final EditText et_insertar = (EditText) findViewById(R.id.et_insert_datos); final Button bt_insetar = (Button) findViewById(R.id.bt_insertar); Spinner spinner = (Spinner) findViewById(R.id.spinner_datos); SABEMOS QUE PODEMOS METER LOS DATOS EN EL SPINNER CON UN ARRAY, PUES CREAMOS UN ARRAYLIST final ArrayList<String> array_datos = new ArrayList<String>(); LO FORMATEAMOS EN UN ADAPTER ArrayAdapter<String> array_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, array_datos); Y LO INSERTAMOS EN EL SPINNER spinner.setAdapter(array_adapter); UNA VEZ INICIES LA APP AL PRESIONAR EL BOTON HARA LO QUE SIGUE: bt_insetar.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { TOMA EL TEXTO QUE HAYA EN EL EDITtEXT Y LO GUARDA EN EL STRING VALOR. String valor = et_insertar.getText().toString(); AHORA HACEMOS UNA COMPROBACIÓN, SI EL VALOR TIENE MAS DE 0 LETRAS if (valor.length()>0){ SI HAY ALGUN DATO LO INSERTAMOS EN LA ULTIMA POSICION DEL ARRAY array_datos.add(valor); ASIGNAMOS AL EDITTEXT EL VALOR INCIAL ES DECIR "" et_insertar.setText(""); AHORA HACEMOS QUE DESAPAREZCA EL TECLADO, QUEDA MAS BONITO Y SE HACE SOLO SI EL TEXTO ES VALIDO InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT _METHOD_SERVICE); imm.hideSoftInputFromWindow(et_insertar.getWindowT oken(), 0); } } }); Espero que te ayude. Suerte ;) Última edición por Celtium Día 20/11/12 a las 21:25:33. |
Gracias de parte de: | ||
#3
|
||||
|
||||
Hola q tal amigo implemente el codigo q me proporcionaste pero me marca un error en la linea de array_datos.add(valor);
Copie el codigo como le lo pasaste y fui analizando cada linea no se si me falto algo que agregar. Anexo el codigo para q lo revises Código:
package com.control.spinner; import java.util.ArrayList; import android.app.Activity; import android.content.*; import android.content.DialogInterface.*; import android.os.Bundle; import android.view.*; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.*; public class Agregar extends Activity { public EditText et_insertr_datos; public Button bt_insertar; public Spinner spinner_datos; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_spinner); et_insertr_datos = (EditText) findViewById(R.id.et_insert_datos); bt_insertar = (Button) findViewById(R.id.bt_insertar); Spinner spinner = (Spinner) findViewById(R.id.spinner_datos); ArrayList<String> array_datos = new ArrayList<String>(); ArrayAdapter<String> array_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, array_datos); spinner.setAdapter(array_adapter); bt_insertar.setOnClickListener(new OnClickListener() { public void onClick(View v) { //TOMA EL TEXTO QUE HAYA EN EL EDITtEXT Y LO GUARDA EN EL STRING VALOR. String valor = et_insertr_datos.getText().toString(); //AHORA HACEMOS UNA COMPROBACIÓN, SI EL VALOR TIENE MAS DE 0 LETRAS if (valor.length()>0) { //SI HAY ALGUN DATO LO INSERTAMOS EN LA ULTIMA POSICION DEL ARRAY array_datos.add(valor); //ASIGNAMOS AL EDITTEXT EL VALOR INCIAL ES DECIR "" et_insertr_datos.setText(""); //AHORA HACEMOS QUE DESAPAREZCA EL TECLADO, QUEDA MAS BONITO Y SE HACE SOLO SI EL TEXTO ES VALIDO InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(et_insertr_datos.getWindowToken(), 0); } } }); @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_spinner, menu); return true; } } Código:
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/AbsoluteLayout1" android:layout_width="match_parent" android:layout_height="match_parent" > <EditText android:id="@+id/et_insert_datos" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_x="8dp" android:layout_y="63dp" android:ems="10" /> <Button android:id="@+id/bt_insertar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="121dp" android:layout_y="138dp" android:onClick="Insertar" android:text="Insertar" /> <Spinner android:id="@+id/spinner_datos" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="115dp" android:layout_y="232dp" /> </AbsoluteLayout> Disculpa las molestias ![]() Última edición por charmedever Día 21/11/12 a las 05:51:29. Razón: agregar code xml |
#4
|
||||
|
||||
Hola q tal amigo implemente el codigo q me proporcionaste pero me marca un error en la linea de array_datos.add(valor);
Copie el codigo como le lo pasaste y fui analizando cada linea no se si me falto algo que agregar. Anexo el codigo para q lo revises Código:
package com.control.spinner; import java.util.ArrayList; import android.app.Activity; import android.content.*; import android.content.DialogInterface.*; import android.os.Bundle; import android.view.*; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.*; public class Agregar extends Activity { public EditText et_insertr_datos; public Button bt_insertar; public Spinner spinner_datos; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_spinner); et_insertr_datos = (EditText) findViewById(R.id.et_insert_datos); bt_insertar = (Button) findViewById(R.id.bt_insertar); Spinner spinner = (Spinner) findViewById(R.id.spinner_datos); ArrayList<String> array_datos = new ArrayList<String>(); ArrayAdapter<String> array_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, array_datos); spinner.setAdapter(array_adapter); bt_insertar.setOnClickListener(new OnClickListener() { public void onClick(View v) { //TOMA EL TEXTO QUE HAYA EN EL EDITtEXT Y LO GUARDA EN EL STRING VALOR. String valor = et_insertr_datos.getText().toString(); //AHORA HACEMOS UNA COMPROBACIÓN, SI EL VALOR TIENE MAS DE 0 LETRAS if (valor.length()>0) { //SI HAY ALGUN DATO LO INSERTAMOS EN LA ULTIMA POSICION DEL ARRAY array_datos.add(valor); //ASIGNAMOS AL EDITTEXT EL VALOR INCIAL ES DECIR "" et_insertr_datos.setText(""); //AHORA HACEMOS QUE DESAPAREZCA EL TECLADO, QUEDA MAS BONITO Y SE HACE SOLO SI EL TEXTO ES VALIDO InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(et_insertr_datos.getWindowToken(), 0); } } }); @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_spinner, menu); return true; } } Código:
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/AbsoluteLayout1" android:layout_width="match_parent" android:layout_height="match_parent" > <EditText android:id="@+id/et_insert_datos" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_x="8dp" android:layout_y="63dp" android:ems="10" /> <Button android:id="@+id/bt_insertar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="121dp" android:layout_y="138dp" android:onClick="Insertar" android:text="Insertar" /> <Spinner android:id="@+id/spinner_datos" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="115dp" android:layout_y="232dp" /> </AbsoluteLayout> Disculpa las molestias ![]() ![]() Enviado desde mi GT-I9000 usando Tapatalk 2 |
#5
|
||||
|
||||
Estoy en el móvil y no veo todo el código pero creo que declaras mal el arraylist , si lo haces así tendrás que declararlo antes del oncreate o marcarlo como final.
Lo de asignarle un valor inicial como "" al edittext es evitar líos, se que de serie viene con ese valor y me ahorro comprobar valores cuando trabajo con el edittext. |
#6
|
||||
|
||||
Estoy en el móvil y no veo todo el código pero creo que declaras mal el arraylist , si lo haces así tendrás que declararlo antes del oncreate o marcarlo como final.
Lo de asignarle un valor inicial como "" al edittext es evitar líos, se que de serie viene con ese valor y me ahorro comprobar valores cuando trabajo con el edittext. ![]() |
#7
|
||||
|
||||
Muchas gracias por sus comentarios ahora mismo lo corregire
![]() |
#8
|
||||
|
||||
Hola amigos corregi las observaciones q me hicieron en el codigo pero sucede q cuando quiero lanzar la aplicacion en el emulador me sale el mensaje de cerrado forzozo.
Espero puedan ayudarme a saber la razon de esto Gracias por su atencion |
#9
|
||||
|
||||
pon todo tu codigo. toda la activity para ver que estas haciendo.
,) |
#10
|
||||
|
||||
code
Ok Amigo anexo el codigo espero sus comentarios
Codigo Layout: Código:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/et_insert_datos" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:ems="10" android:text="" /> <Button android:id="@+id/bt_insertar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/et_insert_datos" android:layout_centerHorizontal="true" android:text="Insertar" /> <Spinner android:id="@+id/spinner_datos" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/bt_insertar" android:layout_centerHorizontal="true" android:layout_marginTop="52dp" /> </RelativeLayout> Código:
package com.control.spinner; import java.util.ArrayList; import android.app.Activity; import android.content.*; import android.content.DialogInterface.*; import android.os.Bundle; import android.view.*; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.*; public class Agregar extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_spinner); final EditText et_insertar_datos = (EditText) findViewById(R.id.et_insert_datos); final Button bt_insertar = (Button) findViewById(R.id.bt_insertar); Spinner spinner = (Spinner) findViewById(R.id.spinner_datos); final ArrayList<String> array_datos = new ArrayList<String>(); ArrayAdapter<String> array_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, array_datos); spinner.setAdapter(array_adapter); bt_insertar.setOnClickListener(new OnClickListener() { public void onClick(View v) { //TOMA EL TEXTO QUE HAYA EN EL EDITtEXT Y LO GUARDA EN EL STRING VALOR. String valor = et_insertar_datos.getText().toString(); //AHORA HACEMOS UNA COMPROBACIÓN, SI EL VALOR TIENE MAS DE 0 LETRAS if (valor.length()>0) { //SI HAY ALGUN DATO LO INSERTAMOS EN LA ULTIMA POSICION DEL ARRAY array_datos.add(valor); //ASIGNAMOS AL EDITTEXT EL VALOR INCIAL ES DECIR "" et_insertar_datos.setText(""); //AHORA HACEMOS QUE DESAPAREZCA EL TECLADO, QUEDA MAS BONITO Y SE HACE SOLO SI EL TEXTO ES VALIDO //InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); //imm.hideSoftInputFromWindow(et_insertar_datos.getWindowToken(), 0); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_spinner, menu); return true; } } Que tengan buen dia!! |
#11
|
||||
|
||||
bueno, pues no encuentro por que te falla. El codigo esta bien, a mi me funciona bien en un movil.
Mira a ver si la versión del emulador no es muy baja, haz un equipo por lo menos con la versión 2.3.3 de Android. Aunque te debía funcionar en cualquier versión... (creo) Create otro dispositivo virtual y ejecuta el código sobre ese nuevo. A ver si hay suerte. ![]() |
#12
|
||||
|
||||
Gracias por tu respuesta
Realice lo q me pediste y corrio correctamente la aplicacion Muchas gracias!! |