45

シングルチョイス(ラジオ)オプションを含むダイアログを表示するこのコードがあります。

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();

選択された選択肢を取得するにはどうすればよいですか?

4

7 に答える 7

119

これが古い投稿であることは知っていますが、たまたま見つけたところ、このソリューションはここに投稿されたものよりも少し単純に見えることがわかりました。

次のようにできます。

ダイアログの肯定ボタンのonClick()ハンドラーで、次のコードを追加します。

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

オプションを選択していない場合はクラッシュすることに注意checkedItemしてください。 with を取得する前に、ここにチェックを追加する必要がありますif(lw.getCheckedItemCount() > 0)

于 2012-10-03T13:25:59.393 に答える
14

使用しようとしましListView.setSelection(int)たが、期待どおりに機能しなかったため、代わりにView.setTag()を使用して選択した位置を一時的に保存することにしました。

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

ボタンをクリックすると、タグに簡単にアクセスできます。

.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
        }
    }
})
于 2012-02-09T13:19:29.090 に答える
3

アイテムが選択されるたびにリッスンするOnClickListenerために forを使用していると思います。setSingleChoiceItems()次に、ユーザーがOKを押したら、そのアイテムを石に設定します。現在、null を渡しているだけなので、どのアイテムが選択されたかを拾うことはできません。

于 2010-03-22T17:07:14.200 に答える
1

1)。アレイを作成します。

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

2)。作成した配列にデータを追加します。

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

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

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

3)。このようなデータを取得します。

public void onClick(DialogInterface dialog, int item) {

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

                    }

4)。それで全部です :)

于 2011-11-18T06:55:27.810 に答える
1

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();
于 2017-08-16T07:12:38.623 に答える
-8
EditText et = (EditText)findViewById(R.id.editText9);

int a = Integer.valueOf(item);

et.setText(items[a]);
于 2011-05-17T07:08:53.303 に答える