当前位置: 首页 > 知识库问答 >
问题:

Android Firebase读取数据问题

姚海
2023-03-14

我是第一次创建一个Android应用程序,我有一个简单的实时Firebase数据库,里面有几条记录。我有以下代码;

  public void onStart() {
    super.onStart();

    // Read from the database
    databaseMatches.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot matchSnapshot : dataSnapshot.getChildren()) {
                matches match = matchSnapshot.getValue(matches.class);

                matchesList.add(match);
            }


            matchList adapter = new matchList (getActivity(), matchesList);
            listViewMatch.setAdapter(adapter);

        }

        @Override
        public void onCancelled(DatabaseError error) {
            // Failed to read value
            Log.w(TAG, "Failed to read value.", error.toException());
        }
    });

如果我在databaseMatches.addValueEventListener(new ValueEventListener(){它显示数据库连接已经设置,并且正在返回正确的对象(在我的视图中)。

我有的挑战是之后的部分,公共空的中断点onDataChange或oncanceled永远不会被击中。我迷失在这里,不确定下一步是什么,因为它似乎正在连接,但我无法检索记录。

我是在做一个片段而不是一个activity。感谢任何帮助。

共有1个答案

祁飞翰
2023-03-14

检测连接状态对于您的应用程序来说,知道它何时处于联机或脱机状态是很有用的。Firebase Realtime Database在/.info/connected提供了一个特殊的位置,每当Firebase Realtime Database客户端的连接状态发生变化时,该位置就会更新。下面是一个示例:如果您不确定。
https://firebase.google.com/docs/database/android/offline-capabilities#section-connection-state

DatabaseReference connectedRef = 
FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
   boolean connected = snapshot.getValue(Boolean.class);
   if (connected) {
      System.out.println("connected");
   } else {
     System.out.println("not connected");
   }
}

@Override
public void onCancelled(DatabaseError error) {
  System.err.println("Listener was cancelled");
}

Firebase还会异步加载和同步数据(请参见在Firebase侦听器中设置Singleton属性值)

 类似资料:
  • TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据。 从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据。 预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。 目录 数据读取 供给数据(Feeding) 从文件读取数据

  • 下面是php的一个数组,我想读里面的某项,我怎么可以不用他的“键”把值读出来,比如下面的,我想读'a'的值1,我怎么可以不用$arr['a'],还有其它方法可以读吗?

  • 在下边这个程序中,数组中的url都将被访问:会发送一个简单的http.Head()请求查看返回值;它的声明如下:func Head(url string) (r *Response, err error) 返回状态码会被打印出来。 示例 15.7 poll_url.go: package main import ( "fmt" "net/http" ) var urls = [

  • 主要内容:示例在本章中,我们将演示如何读取Firebase数据。 下图显示了想要读取的数据 - 可以使用方法来检索数据。 此方法将事件类型作为“值”,然后检索数据的快照。 当我们将方法添加到快照时,将获得数据的JavaScript表示形式。 示例 下面来看看一个例子。 如果运行下面的代码,浏览器的控制台将显示以下数据。 在下一章中,我们将学习可用于读取数据的其他事件类型。

  • 命令用于从Cassandra表中读取数据。 您可以使用此命令读取整个表,单个列,特定单元格等等。 语法 示例: 下面举个例子来演示如何从Cassandra表中读取数据。 我们有一个名为“”的表和以下列(,,)。 使用SELECT命令读整个表 执行结果如下 - 读取特定列 - 该示例将从表中只读和列的数据。 使用WHERE子句 WHERE子句与SELECT命令一起使用,以指定必须满足获取数据的确切条

  • TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据。 从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据。 预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。 目录 数据读取 供给数据(Feeding) 从文件读取数据