📌  相关文章
📜  如何从Android中的Firebase实时数据库中检索数据?

📅  最后修改于: 2021-05-09 16:30:13             🧑  作者: Mango

Firebase Realtime Database是Google提供的后端服务,用于处理您的Android应用,IOS应用以及您的网站的后端任务。它提供了许多服务,例如存储,数据库等等。 Firebase闻名的功能是其Firebase实时数据库。通过在您的应用程序中使用Firebase实时数据库,您可以向用户提供实时数据更新,而无需实际刷新您的应用程序。因此,在本文中,我们将创建一个简单的应用程序,其中将使用Firebase Realtime数据库并从Firebase Realtime数据库检索数据,并在应用程序中查看Realtime数据的变化。

我们将在本文中构建什么?

我们将构建一个简单的Android应用程序,其中将显示一个简单的“文本视图”。在该TextView中,我们将显示Firebase中的数据。通过在服务器端实际更改数据,我们将看到实时数据更改如何在我们的应用程序中发生。注意,我们将使用Java语言实现该项目

分步实施

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。

第2步:将您的应用连接到Firebase

创建新项目后,导航至顶部栏上的“工具”选项。在里面单击Firebase。单击Firebase后,您可以在屏幕快照中看到下面提到的右列。

在该列内,导航到Firebase实时数据库。单击该选项,您将在“将应用程序连接到Firebase”和“将Firebase实时数据库添加到您的应用程序”中看到两个选项。单击立即连接,您的应用程序将连接到Firebase。之后,单击第二个选项,现在您的应用已连接到Firebase。

完成此过程后,您将看到以下屏幕。

现在,验证您的应用是否已连接到Firebase。转到您的build.gradle文件。导航至应用程序> Gradle脚本> build.gradle文件,并确保在依赖项部分中添加了以下依赖项。

如果上述依赖项未添加到“依赖项”部分中。添加此依赖性并同步您的项目。现在,我们将转向应用程序的XML部分。

步骤3:使用activity_main.xml文件

转到activity_main.xml文件,并参考以下代码。以下是activity_main.xml文件的代码

XML


  
    
  


XML


Java
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
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 com.google.firebase.database.ValueEventListener;
  
public class MainActivity extends AppCompatActivity {
  
    // creating a variable for 
    // our Firebase Database.
    FirebaseDatabase firebaseDatabase;
      
    // creating a variable for our 
    // Database Reference for Firebase.
    DatabaseReference databaseReference;
      
    // variable for Text view.
    private TextView retriveTV;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // below line is used to get the instance 
        // of our Firebase database.
        firebaseDatabase = FirebaseDatabase.getInstance();
          
        // below line is used to get 
        // reference for our database.
        databaseReference = firebaseDatabase.getReference("Data");
          
        // initializing our object class variable.
        retriveTV = findViewById(R.id.idTVRetriveData);
          
        // calling method 
        // for getting data.
        getdata();
    }
  
    private void getdata() {
  
        // calling add value event listener method
        // for getting the values from database.
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                // this method is call to get the realtime
                // updates in the data.
                // this method is called when the data is 
                // changed in our Firebase console.
                // below line is for getting the data from
                // snapshot of our database.
                String value = snapshot.getValue(String.class);
                  
                // after getting the value we are setting
                // our value to our text view in below line.
                retriveTV.setText(value);
            }
  
            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                // calling on cancelled method when we receive
                // any error or we are not able to get the data.
                Toast.makeText(MainActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show();
            }
        });
    }
}


步骤4:在您的AndroidManifest.xml文件中添加互联网权限

在AndroidManifest.xml文件中添加Internet权限。

XML格式



步骤5:使用MainActivity。 Java文件

转到MainActivity。 Java文件并参考以下代码。下面是MainActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。

Java

import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
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 com.google.firebase.database.ValueEventListener;
  
public class MainActivity extends AppCompatActivity {
  
    // creating a variable for 
    // our Firebase Database.
    FirebaseDatabase firebaseDatabase;
      
    // creating a variable for our 
    // Database Reference for Firebase.
    DatabaseReference databaseReference;
      
    // variable for Text view.
    private TextView retriveTV;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // below line is used to get the instance 
        // of our Firebase database.
        firebaseDatabase = FirebaseDatabase.getInstance();
          
        // below line is used to get 
        // reference for our database.
        databaseReference = firebaseDatabase.getReference("Data");
          
        // initializing our object class variable.
        retriveTV = findViewById(R.id.idTVRetriveData);
          
        // calling method 
        // for getting data.
        getdata();
    }
  
    private void getdata() {
  
        // calling add value event listener method
        // for getting the values from database.
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                // this method is call to get the realtime
                // updates in the data.
                // this method is called when the data is 
                // changed in our Firebase console.
                // below line is for getting the data from
                // snapshot of our database.
                String value = snapshot.getValue(String.class);
                  
                // after getting the value we are setting
                // our value to our text view in below line.
                retriveTV.setText(value);
            }
  
            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                // calling on cancelled method when we receive
                // any error or we are not able to get the data.
                Toast.makeText(MainActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

将此代码添加到您的应用程序之后。现在转到Firebase,然后单击右上角的“转到控制台”选项。

单击此屏幕后,您将看到下面的屏幕,其中包含您选择的项目的所有项目。

在该屏幕内,单击左侧窗口中的n实时数据库。

单击此选项后,您将看到右侧的屏幕。在此页面上,单击顶部栏中的“规则”选项。您将看到以下屏幕。

在此项目中,我们添加了适用于读取和写入的规则,因为我们没有使用任何身份验证来验证用户。因此,我们目前将其设置为true以测试我们的应用程序。更改规则后。单击右上角的“发布”按钮,您的规则将保存在此处。现在再次回到“数据”选项卡。现在,我们将从Firebase本身将数据手动添加到Firebase。

第6步:在Firebase控制台中添加数据

在Firebase的“数据”选项卡中,您将看到以下屏幕。将光标悬停在null上,然后单击右侧的“ +”选项,然后单击该选项。单击该选项后。添加下图中添加的数据。确保在“名称”字段中添加“数据”,因为我们在第55行的代码中将Firebase的引用设置为“数据”。因此,我们必须将其设置为“数据”。您可以更改参考,也可以在数据库中对其进行更改。在值字段中,您可以添加所需的任何数据。这将是我们将在文本视图中显示的字符串。添加数据后,单击添加按钮,您的数据将被添加到Firebase中,并且该数据将显示在您的应用中。

添加此数据后,您将看到以下屏幕:

添加此数据后,运行您的应用程序,并查看该应用程序的输出:

输出:

在测试您的应用程序时,您可以在Firebase控制台中更改您的value字段,并且可以看到它也将在您的应用程序中得到更新。因此,在此任务中,我们不必随时刷新我们的应用程序。一旦我们更新Firebase中的值,它也将在我们的应用程序中得到更新。在下面的视频中,我们更改了Firebase中的数据,并且也在应用内对其进行更新。

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处,前往由我们的专家精心策划的指南,以使您立即做好行业准备!