Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何等待从数据库中提取数据?_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 如何等待从数据库中提取数据?

Android 如何等待从数据库中提取数据?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试将Firebase数据库中的数据打印到android studio logcat中。 我能够获取数据并将其存储到列表中,但无法在logcat中打印列表。我认为这是因为数组是在从firebase获取数据之前打印的。我不知道从firebase获取数据后如何打印 任何帮助都将不胜感激,谢谢 // Main activity package com.imaginationcreators.bvnlibrary; import android.content.Intent; import a

我正在尝试将Firebase数据库中的数据打印到android studio logcat中。 我能够获取数据并将其存储到列表中,但无法在logcat中打印列表。我认为这是因为数组是在从firebase获取数据之前打印的。我不知道从firebase获取数据后如何打印

任何帮助都将不胜感激,谢谢

// Main activity

package com.imaginationcreators.bvnlibrary;

import android.content.Intent;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;

import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {



        super.onCreate(savedInstanceState);
        setContentView(R.layout.home_screen);

        Search search = new Search();

        search.setLocalDatabase();


        for(int i = 0; i < search.genre.size(); i++ ) {
            Log.d("String", search.genre.get(i));
        }


    }




}

Firebase API是异步的,这意味着它们会立即返回。运行以下代码时:

databaseReference.addChildEventListener(...)
addChildEventListener会立即返回,查询结果会在一段时间后传递给回调函数。只有在调用回调后才能访问快照。您的代码试图在结果准备就绪之前访问它,因为setLocalDatabase会在结果准备就绪之前立即返回


更好地理解为什么Firebase API是异步的,以及预期的结果。

那么我如何让它等待结果呢。您在回调中响应结果。这是处理异步API的正确方法。请阅读这篇博文以便更好地理解。
databaseReference.addChildEventListener(...)