我正在尝试使项目列表动态,所以我可以在运行时添加它,但我不知道。 CharSeqence不是动态的,也不知道如何使用适配器选项,我怎么能改变我的代码是动态的?
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();
}
答案 0 :(得分:2)
如果您在onCreateDialog()
中创建对话框,则可以实施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);
}
}
您也可以通过从对话框中获取适配器(并将其转换为正确的类型)并根据需要添加或删除项目来获得相同的效果。我可能倾向于简单地创建一个新的适配器,因为您不必担心将getListAdapter()
的值转换为错误的类型。但是,重用适配器可能会提高内存效率。
答案 1 :(得分:2)
如果您正在使用构建器,请尝试以下方法:
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();
答案 2 :(得分:1)
@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” - 没有OK按钮的对话框,或者使用OK按钮“android.R.layout.select_dialog_singlechoice”