Cambiar las casillas de verificación en MultiChoice AlertDialog en android

Hola,

He creado el MultiChoice AlertDialog El AlertDialog tiene cinco artículos de la lista con las casillas de verificación. Cuando compruebo la primera casilla de verificación, y si las demás casillas de verificación de la lista están marcadas, se desactivarán automáticamente y viceversa.

Estoy revisando el estado isChecked en el método onClick de OnMultiChoiceClickListener () y llamando a showDialog (DIALOG_MULTIPLE_CHOICE); Actualizando boolean [] checkedItems; Para recrear el diálogo, pero soy incapaz de lograrlo. Si usted alguna sugerencia por favor me dirige a la manera correcta.

¿Hay alguna manera de recrear el evento OnClick AleartDialog del clic de botón de radio.

Algunos ejemplos de código a continuación:

case DIALOG_MULTIPLE_CHOICE: final String[] lJobTypes = { "Item1", "Item2", "Item3","Item4", "Item5" }; return new AlertDialog.Builder(JoblistPage.this) // .setIcon(R.drawable.logo) .setTitle("Title Here") // .setCustomTitle(m_Title) .setMultiChoiceItems(lTypes, m_Selections, new DialogInterface.OnMultiChoiceClickListener() { public void onClick(DialogInterface dialog,int whichButton, boolean isChecked) { /* User clicked on a check box do some stuff */ if (isChecked) { m_CheckCount++; //Toggle the Radio button Check status } else { m_CheckCount--; } } }).setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } }).create(); 

Saludos Vinayak

No vuelva a crear el diálogo, basta con alternar las casillas de verificación dentro del cuadro de diálogo actual. Su onMultiChoiceClickListener puede realizar un seguimiento de la casilla de verificación actualmente activa (si la hay) y desmarcarla cuando se selecciona otra. He aquí un ejemplo completo y probado:

 package com.stackoverflow.beekeeper; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnMultiChoiceClickListener; import android.os.Bundle; import android.widget.ListView; import android.widget.Toast; public class StackOverflowTest extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } private int mSelected = -1; @Override protected void onResume() { super.onResume(); final Builder build = new Builder(this); build.setTitle("List selection"); build.setCancelable(true); final String[] strings = new String[]{"Cow", "Horse", "Goat"}; final OnMultiChoiceClickListener onClick = new OnMultiChoiceClickListener() { @Override public void onClick(final DialogInterface dialog, final int which, final boolean isChecked) { if (isChecked) { if ((mSelected != -1) && (mSelected != which)) { final int oldVal = mSelected; final AlertDialog alert = (AlertDialog)dialog; final ListView list = alert.getListView(); list.setItemChecked(oldVal, false); } mSelected = which; } else mSelected = -1; } }; build.setMultiChoiceItems(strings, null, onClick); build.setPositiveButton("Done", new OnClickListener() { @Override public void onClick(final DialogInterface dialog, final int which) { String message = null; if (mSelected == -1) message = "You didn't select anything."; else message = "You selected '" + strings[mSelected] + "'"; Toast.makeText(StackOverflowTest.this, message, Toast.LENGTH_LONG).show(); } }); build.show(); } } 

Una cosa a tener en cuenta: debe especificar "null" para el parámetro "checkedItems" en su llamada "setMultiChoiceItems" – de lo contrario las llamadas "setItemChecked" no funcionarán como se esperaba. Terminaría usando esa matriz para almacenar el estado marcado, y "setItemChecked" would'nt actualizar correctamente, por lo que todo se confunde. Extraño, pero cierto.

Yo estaba luchando con esto desde hace bastante tiempo. Mantengo una matriz del estado "marcado" de cada uno de los elementos y cambio ese valor mientras visualmente cambia el valor setItemChecked. Luego, cuando se hace clic en el botón hecho iterar a través de "marcado" para guardar los valores a mi db.

 builder.setMultiChoiceItems(cats, checked, new DialogInterface.OnMultiChoiceClickListener() { public void onClick(DialogInterface dialog, int item, boolean check) { if(cats[item].equals("All Categories")) { AlertDialog d = (AlertDialog) dialog; ListView v = d.getListView(); int i = 0; while(i < cats.length) { v.setItemChecked(i, check); checked[i] = check; i++; } } checked[item] = check; } }); 

¿Intentaste reemplazar setMultiChoiceItems por setSingleChoiceItems en tu diálogo?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.