自定义ListView用于AlertDialog

5

我正在尝试使用自定义列表视图来创建AlertDialog,但似乎无法显示或运行而没有错误。

   private void buildDialog(){

        int selectedItem = -1; //somehow get your previously selected choice
        LayoutInflater inflater = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE));
        View customView = inflater.inflate(R.layout.listview, null, false);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(customView);
        builder.setTitle("Select Weapon").setCancelable(true);
        builder.setSingleChoiceItems(inventory, selectedItem, "Desc", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which)
            { 
                ListView lv = ((AlertDialog) dialog).getListView();
                itemId = lv.getAdapter().getItemId(which);
                new changeEQ().execute();
            }
        });



        dialog = builder.create();
    }

这是我的AlertDialog,但我不知道该添加什么来使用我的自定义布局、列表视图和列表行。我在网上查看了一些指南,但似乎没有一个能够适用于我。也就是说,我一定做错了什么。

编辑:更改了代码以包括答案,但屏幕上显示的内容没有变化。没有错误,但外观没有变化。


请提供您遇到的错误的Logcat输出。 - dsafcdsge4rfdse
1个回答

11

如果你有一个自定义布局想要传递给你的AlertDialog,可以尝试以下方法:

LayoutInflater inflater = ((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE));
View customView = inflater.inflate(R.layout.custom_dialog, null, false);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(customView);

如果你想定义监听器,尝试以下方法:

ListView list = (ListView) customView.findViewById(R.id.listView1);
list.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // Do as you please
    }
});

我需要将setSingleChoiceItems移除并将alertDialog视为Activity中的ListView吗? - maebe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接