Domanda

Ho questo codice per mostrare una finestra di dialogo con le opzioni 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();

Come faccio ad avere la scelta che è stata selezionata?

È stato utile?

Soluzione

So che questo è un vecchio post, ma ho appena imbattuto in esso, e ha scoperto che questa soluzione sembra a po 'più semplice che cosa è stato postato qui.

Si può solo fare in questo modo:

Nel vostro gestore onClick() sul pulsante positiva di dialogo, aggiungere il seguente codice:

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

Altri suggerimenti

Ho cercato di usare ListView.setSelection(int) ma non ha mai funzionato come previsto così invece ho deciso di fare uso di View.setTag () per memorizzare temporaneamente la posizione selezionata.

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

Il tag può quindi facilmente accessibile dopo un clic del pulsante.

.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
        }
    }
})

Credo che si utilizza un OnClickListener per setSingleChoiceItems(), ad ascoltare ogni volta che è stata selezionata una voce; poi una volta che l'utente preme va bene, si imposta l'elemento in pietra. In questo momento siete solo di passaggio nullo, quindi niente che non si può prendere quale voce selezionata.

1). creare array.

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

2). aggiungere dati a matrice che si è creato.

if (cursor != null) {
            if (cursor.moveToFirst()) {
                do {

                    arrData .add(cursor.getString(1)); 
                                             // (1 = int columnIndex)

                } while (cursor.moveToNext());
            }
        }

3). ottenere i dati in questo modo.

public void onClick(DialogInterface dialog, int item) {

                        Log.d("Selected", arrData.get(item) + "");

                    }

4). questo è tutto:)

posizione dell'elemento selezionato è già dato nel metodo onClick. in modo che possiamo accedere direttamente alla matrice e ottenere l'elemento selezionato senza alcun problema. in questo caso: ss [che] sarà l'elemento selezionato.

Si può fare proprio come questo in su onclick () metodo

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();
EditText et = (EditText)findViewById(R.id.editText9);

int a = Integer.valueOf(item);

et.setText(items[a]);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top