有人可以指出一个自定义对话框的工作示例,该对话框将ArrayAdapter作为输入并显示可选列表。
我尝试使用AlertDialog Builder创建一个Dialog ......
final ArrayAdapter<MyObject> myAdapter = getMyobjects();
final AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle("Pick an item").setAdapter(myAdapter,
new android.content.DialogInterface.OnClickListener() {
public void onClick(final DialogInterface dialog, final int item) {
Toast.makeText(Islands.this, myAdapter.getItem(item).toString(), Toast.LENGTH_SHORT).show();
}
});
final AlertDialog alert = builder.create();
return alert;
我的问题是我的对话框没有更新,然后我打电话给
@Override
protected void onPrepareDialog(final int id, final Dialog dialog) {
switch (id) {
case DIALOG_GET_AVAIL_DESTS:
((AlertDialog) dialog).getListView().setAdapter( getDestinations());
break;
}
}
然而,onClick侦听器会侦听初始项集......
答案 0 :(得分:0)
确实,AlertDialog实现了Facade设计模式,后面有这个类: http://www.netmite.com/android/mydroid/frameworks/base/core/java/com/android/internal/app/AlertController.java
整个代码真是乱七八糟...... 我花了3个小时尝试这样做,我将从头开始构建一个对话框,使用android.R.layout作为基础。
Steff
答案 1 :(得分:0)
您必须致电
列表视图上的invalidateViews()
- 这将导致它使用更新重绘视图。
答案 2 :(得分:0)
由于您使用的是onPrepareDialog(int id, Dialog dialog)
,我猜您最初是在onCreateDialog(int id)
设置对话框。
这样做会导致系统保存您最初创建的对话框。为了实现所需的功能,当对话框被取消时,通过调用android.app.Activity.removeDialog(int id)
告诉系统丢弃它。
任何后续调用都会通过onCreateDialog(int id)
方法重新生成对话框,从而导致更新项目集。