こんにちは、まさにこのようなビューを作成したかったのです。
リスト ビューのアイテムをクリックすると、ラジオ ボタン付きのスピナーが開きます。
ListView でクリックされたすべてのリスト項目に対してスピナーを表示する場合。で可能AlertDialog
です。
これを使ってラジオボタン付きのアラートダイアログを作成してみてください
このブロックを試してください
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0,
View arg1, int position, long arg3)
{
AlertDialogView();
}
}
AlertDialogView()のコードは次のようになります
private void AlertDialogView()
{
final CharSequence[] items = {"15 secs", "30 secs", "1 min", "2 mins"};
AlertDialog.Builder builder = new AlertDialog.Builder(ShowDialog.this);
builder.setTitle("Alert Dialog with ListView and Radio button");
builder.setIcon(R.drawable.icon);
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(ShowDialog.this, "Success", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(ShowDialog.this, "Fail", Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
alert.show();
}
リストビューでは、アイテムを呼び出すたびにクリックされたアイテムの位置を取得します。たとえば、リストビューの9番目の要素がクリックされたときに、メソッドを呼び出します。スピナーアダプターがクリックされたアイテムのリストに依存している場合は、メソッドを呼び出した後、リストビューのクリックされたアイテムの位置は、単にスピナーを開くよりもスピナーアダプターを埋め、スピナーを閉じて、スピナーアダプターを変更するのとは別のリストビューのアイテムで再度開くと、この単純なロジックで問題が解決するはずです。