【问题标题】:How to create an AlertDialog with ListView, without using AlertDialog.Builder?如何在不使用 AlertDialog.Builder 的情况下使用 ListView 创建 AlertDialog?
【发布时间】:2012-05-18 12:29:49
【问题描述】:

我有一个 AlertDialog 的子类,它应该显示范围内所有可用 Wifi 网络的列表。

我希望对话框本身负责启动 Wifi 扫描并接收结果。

出于这个原因,我不能使用AlertDialog.Builder 来设置ListView 项目,因为在创建对话框时我还没有它们,它们可能会在演示过程中发生变化。

所以我要问的是如何使用对AlertDialog 的内置支持来呈现一个单一的选择列表,而不需要AlertDialog.Builder

如果不可能,如何创建自己的 ListView 并将其设置为对话框的内容视图?

【问题讨论】:

    标签: java android android-listview android-alertdialog


    【解决方案1】:

    见以下代码:

    public void show_alert() {
        // TODO Auto-generated method stub
    
        final Dialog dia = new Dialog(this);
        dia.setContentView(R.layout.alert);
        dia.setTitle("Select File to import");
        dia.setCancelable(true);
    
        list_alert = (ListView) dia.findViewById(R.id.alert_list);
        list_alert.setAdapter(new ArrayAdapter<String>(getApplicationContext(),
                android.R.layout.simple_list_item_1,
                main_genral_class.file_list));
        list_alert.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
                    long arg3) {
                String fname = main_genral_class.file_list.get(pos);
                dia.dismiss();
    
            }
        });
        dia.show();
    }
    

    布局文件名alert.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <ListView
            android:id="@+id/alert_list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </ListView>
    
    </LinearLayout>
    

    【讨论】:

    • 感谢您的回答!它正在工作,但它看起来不再像一个对话框了......列表填满了整个屏幕并且没有标题......任何想法为什么?
    【解决方案2】:

    你可以选择一个对话框

     final Dialog _dialog1 = new Dialog(this);
      _dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
       _dialog1.setContentView(R.layout.your_own_listView);
    
    in setContentView() u can put ur own listView
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多