Android自定义列表对话框

时间:2011-03-04 14:01:20

标签: android listview dialog

有人可以指出一个自定义对话框的工作示例,该对话框将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侦听器会侦听初始项集......

3 个答案:

答案 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)方法重新生成对话框,从而导致更新项目集。