自定义对话框中不可能有 Listview 吗?

Posted

技术标签:

【中文标题】自定义对话框中不可能有 Listview 吗?【英文标题】:Is it impossible to have ListvVew in Custom Dialog? 【发布时间】:2021-01-07 15:05:51 【问题描述】:

如果代码中没有调用showChatList()函数,则对话框正常显示。

listView通过showChatList()函数调用时,它不起作用。

到原来的自定义对话框

是不是无法调出listView?

public void callFunction() 

    final Dialog dlg = new Dialog(context);

    dlg.setContentView(R.layout.room_list);

    dlg.show();

    final Button okButton = (Button) dlg.findViewById(R.id.okButton);
    final Button backbtn = (Button) dlg.findViewById(R.id.backbtn);

    **final ListView chat_list = (ListView) dlg.findViewById(R.di.chat_list);**

    - or

    **chat_list = dlg.findViewById(R.id.chat_list);**

    backbtn.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            dlg.dismiss();
        
    );

    okButton.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            dlg.dismiss();
        
    );

    showChatList();

【问题讨论】:

您是否介意在代码中更好地描述您的意图,提供的信息很难提供正确的答案 如果ListView确实在Dialogroom_list布局中,那么你需要找到chat_list,就像你是callFunction()中的两个Buttons一样,来自Dialog;例如,chat_list = dlg.findViewById(R.id.chat_list_or_whatever_the_id_is). @MikeM。谢谢你的答案。我尝试使用您的建议代码,但遇到了同样的问题。 我们需要查看您更新的代码。请edit您的问题以更新您现在拥有的内容。 @MikeM。我尝试使用您为两个示例建议的代码,但没有成功。 【参考方案1】:

您的适配器依赖于 firebase。 它会等到它得到数据, 那我相信你需要打电话

    adapter.notifyDataSetChanged();

之后

    adapter.add();

【讨论】:

感谢您的回答。我尝试使用您的建议代码,但遇到了同样的问题。【参考方案2】:

在处理对话框之类的视图时,重要的是在调用dialog.show() 之前加载对话框中所需的所有视图。 或者,我建议在此示例中使用DialogFragment:https://blog.mindorks.com/implementing-dialog-fragment-in-androidDialogFragments 允许您像管理任何其他片段一样管理对话框。

让我知道你可以使用哪一个。

【讨论】:

以上是关于自定义对话框中不可能有 Listview 吗?的主要内容,如果未能解决你的问题,请参考以下文章

ListView 和自定义适配器在 Kotlin 中不起作用

自定义对话框无法在适配器中运行,崩溃应用程序

Android自定义ListView:添加搜索功能

ListView 中的自定义复选框

带有 ListView 自定义项的 Android 小部件

Java - 如何创建自定义对话框?