tipos studio personalizado mensaje ejemplo edittext dialogos dialogo custom cuadro crear confirmación con android alertdialog

android - studio - ¿Cómo obtener el elemento seleccionado de un cuadro de diálogo de alerta único?



mensaje de confirmación android studio (7)

1). crear matriz.

final ArrayList<String> arrData = new ArrayList<String>();

2). agregar datos a la matriz que ha creado.

if (cursor != null) { if (cursor.moveToFirst()) { do { arrData .add(cursor.getString(1)); // (1 = int columnIndex) } while (cursor.moveToNext()); } }

3). obtener datos como este

public void onClick(DialogInterface dialog, int item) { Log.d("Selected", arrData.get(item) + ""); }

4). eso es todo :)

Tengo este código para mostrar un diálogo con las opciones singlechoice (radio).

AlertDialog ad = new AlertDialog.Builder(this) .setCancelable(false) .setIcon(R.drawable.alert_dialog_icon) .setTitle(R.string.choose_one) .setSingleChoiceItems(seq, pos,null) .setPositiveButton( R.string.ok, new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialog, int whichButton) { // dialog dismissed } }).create();

¿Cómo obtengo la elección que ha sido seleccionada?


Creo que utilizas OnClickListener para setSingleChoiceItems() , para escuchar cada vez que se ha seleccionado un elemento; luego, una vez que el usuario hace clic en Aceptar, configura ese elemento en piedra. En este momento solo está pasando nulo, así que no hay nada que no pueda seleccionar qué elemento fue seleccionado.


Intenté usar ListView.setSelection(int) pero nunca funcionó como se esperaba, por lo que decidí usar View.setTag() para almacenar temporalmente la posición seleccionada.

.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { ListView lv = ((AlertDialog)dialog).getListView(); lv.setTag(new Integer(which)); } })

La etiqueta se puede acceder fácilmente después de hacer clic en un botón.

.setPositiveButton(R.string.button_text, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { ListView lv = ((AlertDialog)dialog).getListView(); Integer selected = (Integer)lv.getTag(); if(selected != null) { // do something interesting } } })


La posición del elemento seleccionado ya está dada en el método onClick. para que podamos acceder directamente a la matriz y obtener el elemento seleccionado sin ningún problema. en este caso: seq [que] será el elemento seleccionado.


Puedes hacerlo de esta manera en el método onClick ()

final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.edit_set_waiting_period) .setItems(R.array.str_set_waiting_period, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // The ''which'' argument contains the index position // of the selected item L.e("selectedItmes", which + ""); ListView lw = ((AlertDialog) dialog).getListView(); Object checkedItem = lw.getAdapter().getItem(which); L.e("checkedItem", checkedItem.toString() + ""); } }); builder.show();


Sé que este es un post antiguo, pero acabo de encontrarlo, y encontré que esta solución parece un poco más simple de lo que se ha publicado aquí.

Puedes hacer esto así:

En su controlador onClick() en el botón positivo del diálogo, agregue el siguiente código:

ListView lw = ((AlertDialog)dialog).getListView(); Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition());


EditText et = (EditText)findViewById(R.id.editText9); int a = Integer.valueOf(item); et.setText(items[a]);