FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1

2023-12-11

我正在 Android 上制作一个聊天应用程序,它使用 google firebase 来存储用户互相写入的消息。为了向用户显示这些消息,我从数据库中读取它们,并使用 ListAdapter 将它们组织到自定义 ListView 中。在我将依赖项(特别是 firebase ui)更新为:

com.firebaseui:firebase-ui:3.1.0

现在构造列表适配器的代码不起作用,是:

adapter = new FirebaseListAdapter<ChatMessage>(FirebaseDatabase.getInstance().getReference("Lobbies").child(leaderID).child("Messages"), ChatMessage.class, R.layout.message, this) {
        @Override
        protected void populateView(View v, ChatMessage model, int position) {
            // Get references to the views of message.xml
            TextView messageText = (TextView)v.findViewById(R.id.message_text);
            TextView messageUser = (TextView)v.findViewById(R.id.message_user);
            TextView messageTime = (TextView)v.findViewById(R.id.message_time);

            // Set their text
            messageText.setText(model.getMessageText());
            messageUser.setText(model.getMessageUser());

            // Format the date before showing it
            messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)",
                    model.getMessageTime()));
        }
    };

为了解决这个问题,我更新了代码以符合新的 firebase ui 要求,使代码变为:

FirebaseListOptions<ChatMessage> options = new FirebaseListOptions.Builder<ChatMessage>()
            .setQuery(FirebaseDatabase.getInstance().getReference("Lobbies").child(leaderID).child("Messages"), ChatMessage.class).setLayout(R.layout.message).build();

    adapter = new FirebaseListAdapter<ChatMessage>(options) {
        @Override
        protected void populateView(View v, ChatMessage model, int position) {
            // Get references to the views of message.xml
            TextView messageText = v.findViewById(R.id.message_text);
            TextView messageUser = v.findViewById(R.id.message_user);
            TextView messageTime = v.findViewById(R.id.message_time);

            // Set their text
            messageText.setText(model.getMessageText());
            messageUser.setText(model.getMessageUser());

            // Format the date before showing it
            messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)",
                    model.getMessageTime()));
        }
    };

此代码现在可以正常编译,但列表视图不显示数据。是否有特定的正确方法来使用新的 firebase ui 依赖项来制作列表适配器?


让 FirebaseRecyclerAdapter 和 FirebaseListAdapter 显示活动数据

你需要使用这个:

@Override
protected void onStart() {
super.onStart();
adapter.startListening();
}


@Override
protected void onStop() {
super.onStop();
adapter.stopListening();
}

Since FirebaseListAdapter使用侦听器检查 firebase 数据库中的更改,然后侦听您需要添加的数据adapter.startListening()在 - 的里面onStart()能够在列表视图中显示数据。

然后里面onStop()(当活动停止时),您可以使用adapter.stopListening()删除侦听器和适配器中的数据。

检查此以获取更多信息:适配器生命周期

Note:

如果使用上述内容后,您得到nullpointexception or cannot resolve symbol,你必须声明adapter作为全局变量,请检查以下答案:启动监听()时出错

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 的相关文章

随机推荐

  • 以编程方式访问 Windows 8.1 中最常用的应用程序

    Windows 8 1 开始菜单提供了可按最常用排序的应用程序列表 Windows 按钮 gt 向下箭头 gt 应用程序 按最常用排序 有没有办法以编程方式获取这些应用程序的列表按这个顺序在 C 中 如果不是按照这个顺序 至少是 Windo
  • 如何使用 Tuple/Array/Vector 从 Python (ctypes) 调用 PARI/GP?

    我想打电话PARI GP来自Python 我需要使用ellisdivisible E P n Q 帕里的功能 请参阅此链接中第 441 页的第 3 15 35 号功能 所以我必须传递 2 个向量或数组 例如 E ellinit 0 1 1
  • Spring MVC 和登录重定向

    我有一个网络应用程序 当用户单击个人资料链接时 如果他没有登录 我想将他重定向到登录页面 然后当他登录时 我会将他发送回他所拥有的链接原来点击了 在这种情况下 他的个人资料 我已经完成了将他重定向到登录页面的部分 但我试图找出如何记住他的初
  • Android 导航组件 - 更改根片段?

    假设我有片段 a gt b gt c 但 a 是启动画面 所以我希望 b 成为堆栈中的第一个片段并永远抛出 a 所以当我是 b 时然后按 后退 系统按钮 我关闭应用程序 在SupportFragmentManager中 我使用了replac
  • 以气流用户身份运行气流进程和气流网络服务器

    Problem 我正在 GCP 上设置 Google Compute Engine 虚拟机airflow安装在其上 我现在正在尝试整合airflow with systemd按照以下说明http airflow readthedocs io
  • 如何在 Android 的聊天或消息应用程序中发送表情符号(图像、笑脸)?

    如何发送在编辑文本中一起编写的文本和表情符号 图像 不是默认表情符号 资源文件夹中的图像 以发送该编辑文本中出现的消息和聊天 p s 我正在邮件或消息正文中发送这些图像 我正在尝试以下代码 public class MainActivity
  • 如何在Javascript中实时输出到控制台?

    在 Javascript 中 当您编写如下代码时 计算机似乎会首先完成整个循环 100 000 次 可能需要一两秒 然后一次转储控制台中的所有 100 000 行射击 我怎样才能使计算机每次通过循环一次更新控制台一行 为了澄清 我实际上希望
  • 如何在 Ruby 中进行高级字符串比较?

    我正在尝试比较两段字符串 其输出必须是相似度的百分比 我尝试过使用diff方法和一些Natural Language Processing tools 在红宝石中是否有更好的方法来做到这一点 您可能想为此尝试 Levenshtein 字符串
  • R 使用 lapply 保存绘图

    我有一个名为的模型对象列表allAR1 对于每个模型对象 我需要使用tsdiag函数生成诊断图 然后将该图保存到文件夹中 我正在尝试使用 jpeg lapply 和 dev off 的组合来应用tsdiag每个模型 然后将生成的图保存为图像
  • JNA:找不到指定的程序

    我试图了解 JNA 的工作原理 因此我决定使用 spotify API libspotify 0 0 7 我设法正确加载我的 dll 但看起来我的代码没有找到 API 中定义的任何方法 这是我的代码 我的主要文件 public class
  • 组菜单项可以工作,但不显示复选标记

    我有一个带有溢出菜单的工作应用程序 菜单中的所有代码都有效 但在我单击可单击的分组菜单项后 没有显示复选标记 我是否在做一些根本性错误的事情 我认为 Android 系统会自动显示复选标记 并且系统会为我执行此操作 Android知道它是在
  • 如何指示两种 Coq 电感类型尺寸的减小

    我正在尝试定义game组合游戏的归纳型 我想要一个比较方法来判断两个游戏是否相同lessOrEq greatOrEq lessOrConf or greatOrConf 然后我可以检查两个游戏是否相等 如果它们都是 lessOrEq and
  • 为什么 SwiftUI Image 添加额外的填充来封闭 VStack?

    我正在努力解决一个非常简单的问题 如果我将一个文本放入 VStack 则顶部没有填充 如果我现在放置一个图像 我就会有一个填充 请看下面的截图 对应的代码是 struct NewView View var body some View VS
  • 不进行舍入的十进制格式.net

    昨天我问了这个一般性问题关于小数及其内部精度 这是一个关于我试图解决的场景的具体问题 我在 Sql Server 中有一个列 输入为十进制 18 6 当我获取这些值时 创建的 net 小数与数据库中的精度匹配 它们看起来像这样 1 1000
  • VB.Net 替换不起作用?

    不确定我是否做错了什么 基本上我的代码从 111111111 开始 并通过每次线程能够时将 1 添加到原始数字来进行计数 我希望该方法跳过序列中的 0 而不是在 111111119 之后转到 111111120 我希望它直接转到 11111
  • 如何就地对文件进行排序?

    当我们使用sort file命令 该文件以排序的方式显示其内容 如果我不想在标准输出上获得任何输出 而是想在输入文件中获得任何输出 该怎么办 您可以使用 o output FILEsort 选项指示相同的输入和输出文件 sort o fil
  • 将对象数据字段复制到子类实例中

    我有两个类 TNode 和 TMaster 我从 TNode 继承了 TMaster 目标是创建一个 TMaster 实例 其中包含先前创建的 TNode 实例的所有数据 是否有任何 内置 方法可以实现此目的 或者应该手动完成 type T
  • 计算向量中相同字符串的更简单方法?

    我正在尝试获取向量中所有相同字符串的数量的输出 作为更大程序的一部分 经过大量研究后 我设法将一些有用的东西组合在一起 但看起来很混乱 我想知道是否有更好的方法来做到这一点 include
  • 在多行数据中提取记事本++中2个特定单词之间的字符串/数据

    All 我一直在尝试使用正则表达式搜索和替换在 Notepad 中提取 2 个特定单词之间的文本 但没有运气 它给了我找到的最后一个匹配项 我尝试搜索 Stack Overflow 并回答了几个问题 但没有运气 我的数据是 Open opt
  • FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1

    我正在 Android 上制作一个聊天应用程序 它使用 google firebase 来存储用户互相写入的消息 为了向用户显示这些消息 我从数据库中读取它们 并使用 ListAdapter 将它们组织到自定义 ListView 中 在我将