dynamicalertdialog与单选button

我试图使项目列表dynamic,所以我可以在运行时添加到它,但我不知道。 CharSeqence不是dynamic的,不知道如何使用适配器选项,我怎么能改变我的代码是dynamic的?

private void alertDialogLoadFile() { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle("Choose:"); CharSequence[] items = { "moshe", "yosi", "ee" }; alert.setSingleChoiceItems(m_items , -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item){ /* User clicked on a radio button do some stuff */ } }); alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); alert.setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog ad = alert.create(); ad.show(); } 

Solutions Collecting From Web of "dynamicalertdialog与单选button"

如果在onCreateDialog()创build对话框,则可以实现onPrepareDialog()以在向用户显示选项之前更改选项。 例如:

 protected void onPrepareDialog(int id, Dialog dialog) { if (id == YOUR_DIALOG_ID) { // Create new adapter ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(); adapter.add("new items ..."); ... // Use the new adapter AlertDialog alert = (AlertDialog) dialog; alert.getListView().setAdapter(adapter); } } 

通过从对话框中获取适配器(并将其转换为正确的types)以及根据需要添加或删除项目,您也可以获得相同的效果。 我可能会倾向于创build一个新的适配器,因为您不必担心将getListAdapter()的值转换为错误的types。 但是,重新使用适配器可能会更有效率。

如果您正在使用构build器,请尝试以下操作:

 ArrayAdapter<CharSequence> itensAdapter = new ArrayAdapter<CharSequence>(); itensAdapter.add("whatever"); builder = new AlertDialog.Builder(CalculatorActivity.this); builder.setTitle("Escolha uma opção"); builder.setAdapter(itensAdapter, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { removeDialog(DIALOG_AREA); } }); dialog = builder.create(); 
 @Override protected void onPrepareDialog(int id, Dialog dialog) { super.onPrepareDialog(id, dialog); if (id == DIALOG_PHONE_SELECT) { ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(CallBack.this, android.R.layout.select_dialog_item, availablePhones); ((AlertDialog) dialog).getListView().setAdapter(adapter); } } 

您可以使用“android.R.layout.select_dialog_item” – 没有OKbutton的对话框,或者使用OKbutton的“android.R.layout.select_dialog_singlechoice”