Я пытаюсь составить динамичный список объекта, таким образом, я могу добавить к нему на времени выполнения, но я понятия не имею. 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();
}
Если вы создаете диалог в 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 ()
к неправильному типу. Однако повторное использование адаптера, вероятно, немного более эффективно.