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

Respuesta
 
Herramientas
  #1  
Viejo 19/11/12, 02:25:52
Array

[xs_avatar]
charmedever charmedever no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 11
Tu operador: Movistar

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
Responder Con Cita


  #2  
Viejo 20/11/12, 21:21:04
Array

[xs_avatar]
Celtium Celtium no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 432
Modelo de smartphone: Nexus One, 4

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.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 21/11/12, 05:43:56
Array

[xs_avatar]
charmedever charmedever no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 11
Tu operador: Movistar

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;
    }
}
Tambien anexo archivo xml
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>
Espero puedas ayudarme
Disculpa las molestias

Última edición por charmedever Día 21/11/12 a las 05:51:29. Razón: agregar code xml
Responder Con Cita
  #4  
Viejo 21/11/12, 10:21:45
Array

[xs_avatar]
sgsbarna sgsbarna no está en línea
Usuario muy activo
 
Fecha de registro: nov 2010
Localización: Montmeló
Mensajes: 605
Modelo de smartphone: GT-I9000, GT-I9001, GT-I9300, Tab2 7"
Tu operador: Vodafone
 Cita: Originalmente Escrito por charmedever Ver Mensaje
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;
    }
}
Tambien anexo archivo xml
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>
Espero puedas ayudarme
Disculpa las molestias
Creo que te falta en el EdiText el android:text="".... puede ser?

Enviado desde mi GT-I9000 usando Tapatalk 2
__________________
Piensa en verdiblanco! Descárgatela totalmente gratis!!
Responder Con Cita
  #5  
Viejo 21/11/12, 15:24:45
Array

[xs_avatar]
Celtium Celtium no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 432
Modelo de smartphone: Nexus One, 4

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.
Responder Con Cita
  #6  
Viejo 21/11/12, 16:13:20
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 Cita: Originalmente Escrito por Celtium Ver Mensaje
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.
Efectivamente como dice Celtium esa variable tiene que ser Final, o bien declararla en un ámbito Global. Pero si la declaras dentro del onCreate sin Final el onClickListener no tendrá acceso a ella.
Responder Con Cita
  #7  
Viejo 21/11/12, 23:10:55
Array

[xs_avatar]
charmedever charmedever no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 11
Tu operador: Movistar

Muchas gracias por sus comentarios ahora mismo lo corregire
Responder Con Cita
  #8  
Viejo 23/11/12, 23:52:22
Array

[xs_avatar]
charmedever charmedever no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 11
Tu operador: Movistar

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
Responder Con Cita
  #9  
Viejo 24/11/12, 14:44:09
Array

[xs_avatar]
Celtium Celtium no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 432
Modelo de smartphone: Nexus One, 4

pon todo tu codigo. toda la activity para ver que estas haciendo.

,)
Responder Con Cita
  #10  
Viejo 25/11/12, 01:43:54
Array

[xs_avatar]
charmedever charmedever no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 11
Tu operador: Movistar

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>
Codigo Archivo java
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;
    }
}
Gracias por su atencion
Que tengan buen dia!!
Responder Con Cita
  #11  
Viejo 25/11/12, 02:45:37
Array

[xs_avatar]
Celtium Celtium no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 432
Modelo de smartphone: Nexus One, 4

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.

Responder Con Cita
  #12  
Viejo 25/11/12, 04:56:19
Array

[xs_avatar]
charmedever charmedever no está en línea
Usuario novato en la web
 
Fecha de registro: nov 2012
Mensajes: 11
Tu operador: Movistar

Gracias por tu respuesta
Realice lo q me pediste y corrio correctamente la aplicacion
Muchas gracias!!
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 21:53:07 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /