7

我正在使用以下代码创建一个对话框,其中包含来自 studentNames ArrayList 的列表项。我通过读取 childfile 数组来创建此 ArrayList。但是当此代码运行时,它只显示一个带有零列表项的对话框。我什至检查了我的 studentNames对于 null 但它有值。根据文档,我需要设置 ListAdapter 以在 Dialog box 中显示列表项,但这对我也不起作用。请帮助我找到问题。

ArrayList<String> studentNames  = new ArrayList<String>();
            for (File file2 : childfile) {
                studentNames.add(file2.getName());
            }

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setTitle(student.getName()).setAdapter(new ArrayAdapter(context, android.R.layout.simple_list_item_1, studentNames),
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                            switch (which) {

                               cases
                            }

                        }
                    });
            builder.create();
            builder.show();
4

2 回答 2

30

这是您可以实现的方法:

final CharSequence[] items = {"1", "2", "3"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select");
builder.setItems(items, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
        // Do something with the selection
        dialog.dismiss();
    }
});
builder.show();
于 2012-10-17T15:24:31.157 回答
1

我有你的问题的解决方案。因此,我可以看到您正在用一些数据填充 ArrayList studentNames。尝试以下代码,以便在对话框中显示列表。

ArrayList<String> studentNames=new ArrayList<String>();

for(File file2:childfile){

        studentNames.add(file2.getName());

}
AlertDialog.Builder builder=new AlertDialog.Builder(context);
        builder.setTitle(studentNames.toArray
        (new String[studentNames.size()]),
        new DialogInterface.OnClickListener(){

//studentName.toArray() converts the List into Array so that you can use it as Dialog List.     

        public void onClick(DialogInterface dialog,intwhich){
            switch(which){

            //cases...

            }
        }

        });
}
builder.create();
builder.show();
于 2017-08-22T11:41:45.720 回答