Autore Topic: AlertDialog con CheckBox  (Letto 587 volte)

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
AlertDialog con CheckBox
« il: 24 Settembre 2013, 16:26:07 CEST »
0
Salve, volevo creare un Alert Dialog contenente 4 checkbox, allora ho cercato sulla documentazione ufficiale e ho trovato questo metodo:

Codice (Java): [Seleziona]
final CharSequence[] items = {" Primo"," Secondo"," Terzo"," Quarto"};
            // arraylist to keep the selected items
            final ArrayList<Integer> seletedItems=new ArrayList<Integer>();

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("Scegli la base");
            builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int indexSelected,boolean isChecked) {
                                 if (isChecked) {
                                     // If the user checked the item, add it to the selected items
                                     seletedItems.add(indexSelected);
                                     
                                 } else if (seletedItems.contains(indexSelected)) {
                                     // Else, if the item is already in the array, remove it
                                     seletedItems.remove(Integer.valueOf(indexSelected));
                                 }
                             }
                         })
                          // Set the action buttons
                         .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                             @Override
                             public void onClick(DialogInterface dialog, int id) {
                                 //  Your code when user clicked on OK
                                 //  You can write the code  to save the selected item here
       
                             }
                         })
                         .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                             @Override
                             public void onClick(DialogInterface dialog, int id) {
                                //  Your code when user clicked on Cancel
       
                             }
                         });
                    dialog = builder.create();//AlertDialog dialog; create like this outside onClick
                    dialog.show();
Ma in questa maniera tutte e 4 le checkbox possono essere spuntate, io invece vorrei fare in modo che solo una puo' essere spuntata e se una viene spuntata le altre 3 vengono disputante e in base a quale delle 4 è spuntata alla pressione del pulsante ok, esegue diverse istruzioni. Grazie mille in anticipo  :D
Vincenzo Cimino @ Google Play Store


Offline matttt

Re:AlertDialog con CheckBox
« Risposta #1 il: 24 Settembre 2013, 18:33:08 CEST »
0
Ma... non ti basta semplicemente un dialog con una lista di opzioni e se clicchi su una di queste procede con quella singola selezione?

Lista caricata dalle risorse:
Dialogs | Android Developers

Se invece hai una lista dinamica puoi usare setAdapter() ad esempio con un semplice ArrayAdapter<String>
Le mie apps su Google Play Store:

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:AlertDialog con CheckBox
« Risposta #2 il: 24 Settembre 2013, 20:44:14 CEST »
0
Ma... non ti basta semplicemente un dialog con una lista di opzioni e se clicchi su una di queste procede con quella singola selezione?

Ed è proprio quello che voglio, non appena viene spuntata una checkbox, si preme "OK" e si va avanti, ma le altre non devono essere spuntabili.
Vincenzo Cimino @ Google Play Store


Offline matttt

Re:AlertDialog con CheckBox
« Risposta #3 il: 24 Settembre 2013, 20:56:56 CEST »
0
Ad esempio...
Codice (Java): [Seleziona]
final String list[] = { "First", "Second", "Third", "Forth" };
AlertDialog.Builder builder = new AlertDialog.Builder( this );
ArrayAdapter<String> adapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, list );
builder.setAdapter( adapter, new DialogInterface.OnClickListener() {
  @Override
  public void onClick( DialogInterface dialog, int which ) {
    // which contiene l'indice dell'opzione scelta in list
    // non occorre fare dismiss, fa tutto da solo qui
  }
});
Le mie apps su Google Play Store:

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:AlertDialog con CheckBox
« Risposta #4 il: 24 Settembre 2013, 21:06:28 CEST »
0
Si, ma così è una semplice lista, a me servono anche le checkbox :-o
Vincenzo Cimino @ Google Play Store


Offline matttt

Re:AlertDialog con CheckBox
« Risposta #5 il: 25 Settembre 2013, 14:24:04 CEST »
+1
Per quello ti scrivevo all'inizio che da come descrivi la questione magari ti bastava una semplice lista cliccabile :)

Se proprio vuoi le checkbox potresti (ma è da provare) crearti la listview dinamicamente usando come layout android.R.layout.simple_list_item_checked o android.R.layout.simple_list_item_single_choice (mi pare sia uno di questi 2), impostare listview.setChoiceMode( ListView.CHOICE_MODE_SINGLE ) e poi aggiungerla al dialog con setView.
Le mie apps su Google Play Store:

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:AlertDialog con CheckBox
« Risposta #6 il: 25 Settembre 2013, 19:45:56 CEST »
0
Ok grazie, infine ho risolto alla seguente maniera:

Codice (Java): [Seleziona]
final String[] options={"Primo","Secondo","Terzo","Quarto"};
                AlertDialog.Builder builder=new AlertDialog.Builder(this);
                builder.setTitle("Scelta multipla");
                builder.setSingleChoiceItems(options,2,new OnClickListener(){                    
                        @Override
                  public void onClick( DialogInterface dialog, int which ) {
                    // which contiene l'indice dell'opzione scelta in list
                    // non occorre fare dismiss, fa tutto da solo qui
                          Toast.makeText(getApplicationContext(), String.valueOf(which) , Toast.LENGTH_SHORT).show();
                  }
                })
                    // Set the action buttons
                         .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                             @Override
                             public void onClick(DialogInterface dialog, int id) {
                                 //  Your code when user clicked on OK
                                 //  You can write the code  to save the selected item here
               
                             }
                         })
                         .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                             @Override
                             public void onClick(DialogInterface dialog, int id) {
                                //  Your code when user clicked on Cancel
               
                             }
                         });
                dialog = builder.create();
                dialog.show();
« Ultima modifica: 25 Settembre 2013, 21:46:41 CEST da Vincenzoz »
Vincenzo Cimino @ Google Play Store