単一選択のアラート ダイアログの選択された項目を取得するにはどうすればよいですか?
-
21-09-2019 - |
質問
このコードは、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();
選択された選択肢を取得するにはどうすればよいですか?
解決
私はこれは古い記事ですけど、私はちょうどそれに出くわした、といただきましたが、ここに掲載されていることを、このソリューションは、少しのようで、より簡単なことがわかっています。
あなたはちょうどこのように行うことができます:
ダイアログ正のボタンであなたのonClick()
ハンドラで、次のコードを追加します:
ListView lw = ((AlertDialog)dialog).getListView();
Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition());
他のヒント
使ってみた 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
}
}
})
私はあなたが使用することを信じている OnClickListener
のsetSingleChoiceItems()
のために、アイテムが選択された時はいつでも聞くこと。ユーザーは大丈夫ヒットしたら、その後、あなたは石でその項目を設定します。あなたはアイテムが選択された拾うことができない、何もして今あなただけの、ヌルを渡している。
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)。それがすべてです:)
位置は既にのonClick方法で与えられています。私たちは直接アレイにアクセスし、任意の手間をかけずに選択した項目を取得することができます。 選択された項目であろう[]配列:この場合です。
でいっぱいで仕分けもバッチリでこのように 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();
EditText et = (EditText)findViewById(R.id.editText9);
int a = Integer.valueOf(item);
et.setText(items[a]);