Recoger valor de ventada modal (dialog o popup)

884 views
Skip to first unread message

luiX_

unread,
Mar 2, 2011, 8:14:57 PM3/2/11
to spanis...@googlegroups.com, android...@googlegroups.com, Desarrolladores android googlegroup
Hola,

Lo que quiero hacer podría describirse como un "selector modal", es decir, como puedo hacer una "ventana" modal (o popup o como cada uno lo llame) a la que yo le paso la lista de elementos a mostrar y pueda recibir cuál ha seleccionado el usuario.

Es bastante similar al ejemplo que hay en[1], que viene a ser un Dialog con una lista de elementos dentro, pero viendo ese código de ejemplo no sé como hacer que al recibir un click, me devuelva el valor seleccionado y se cierre.

He estado mirando por ahí y he visto o soluciones muy liosas, o cosas parecidas pero que no devuelven el valor seleccionado.


¿alguien me podría echar una mano?

Gracias

jlmo...@gmail.com

unread,
Mar 3, 2011, 1:10:01 AM3/3/11
to spanis...@googlegroups.com, luiX_, android...@googlegroups.com, Desarrolladores android googlegroup
Buenas,

por pasos,

creas una nueva activity en la que en el manifest le pones el atributo android:theme (esto convierte nuestra activity en tipo popup en vez de fullscreen como suele ser habitual)

<activity android:name=".NombreClase" android:theme="@android:style/Theme.Dialog" />


Creas un layout sencillo con un edittext y dos botones ok y cancel para esa activity y lanzas esa activity usando startActivityForResult (esta parte te la miras en la docu xD)

que el boton ok devuelva el valor del editText y el cancel que haga un finish() sin contemplaciones o que devuelva un valor "no-valor" que tu definas eso ya a tu elección.

Y creo que poco mas... :D

Saludos.



2011/3/3 luiX_ <lui...@gmail.com>

Jc Abadia

unread,
Mar 3, 2011, 7:55:27 AM3/3/11
to desarrollad...@googlegroups.com
Buenas, no entendi bien del todo. Lo que queres hacer es un Dialog que liste elementos y al clickear en uno se cierre mostrandote en pantalla el valor? ya sea por un toast o por un textview?

si es eso, tenes que tener un xml (tudialoglayout) preparado que va a ser el Dialog que se va a mostrar cuando hagas click o llames determinado metodo. En este xml tenes que tener declarado una ListView que es la que se va a llenar con tus elementos. Si tenes tu activity comun, o extiende de listActivity lo que podes hacer es esto para declararlo al dialog y ya con esto te funcionaria:

tuboton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//aca declaras el dialog
final Dialog dialog = new Dialog(TuActivity.this);
dialog.setContentView(R.layout.tudialoglayout); // aca tenes que llamar a tu layout que definiste que va a ser el que cargue la vista del dialog
dialog.setTitle("Titulo dialog"); 
  dialog.setCancelable(true); // aca lo declaras cancelable, es decir si clickeaste  el boton y no queres realizar nada apretando el boton back se cierra.

ArrayList<String>tulista = new ArrayList<String>(); //declaras una arraylist que va a ser el que llena la lista con tus elementos
tulista.add("elemento 1"); //agregale los elementos que necesites mostrar
tulista.add("elemento 2");

final ListView lvelementos = (ListView) dialog.findViewById(R.id.lvelementos); // declaras la listview que tenes en el xml creada, acordate que para que no te tire null pointer en vez de hacer el findviewbyid() como de costumbre, tenes que poner dialog.findviewbyid() para que sepa que los elementos estan en el dialog y no en tu activity.

filterslist.setAdapter(new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_multiple_choice,
tulista));
lvelementos.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); // declaras el adapter y ya con esto se te mostraria tu lista. en android.R.layout.simple_list_item_multiple_choice podes ir cambiandolo y fijarte cual necesitarias, en este caso yo use una con checkbox para seleccionar muchos, pero en tu caso podrias poner simple_list_item1.

lvelementos.setOnItemClickListener(new OnItemClickListener() {

@SuppressWarnings("unchecked")
public void onItemClick(AdapterView arg0, View arg1,
int arg2, long arg3) {
                                               // aca es el metodo que tenes que usar, declaras lo que vas a hacer con tu elemento, y cuando ya termino de hacer todo simplemente cerras el dialog con un dismiss

dialog.dismiss();

//si queres que te muestre una notificacion usa un toast abajo del dismiss y listo. 
}
});

Espero que te sirva !


--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.

Jc Abadia

unread,
Mar 3, 2011, 7:59:04 AM3/3/11
to desarrollad...@googlegroups.com
En la parte del adapter me olvide de corregir, ya que es un codigo mio que estaba usando xD no es filterlist.set adapter es tu listview quedaria asi 

lvelementos.setAdapter(new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_multiple_choice,
tulista));
lvelementos.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 


Reply all
Reply to author
Forward
0 new messages