首页 > 解决方案 > 我们如何使用Android代码获取根节点的子节点数?

问题描述

我正在使用下图解释场景:在此处输入图像描述

从中,我想获得节点的名称和数量。从这张图片中,我想获取节点的名称(公司、政府部门和学生)及其计数。例如,存在 3 个节点,分别存储为 Company、GovDepartment 和 student,我怎么能得到它?我怎样才能使它完整?以下android代码需要完成:

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class MainActivity extends AppCompatActivity {
    EditText t1,t2,t3,t4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void process(View v){
        
        dataholder obj = new dataholder(name,course,duration);
        FirebaseDatabase db = FirebaseDatabase.getInstance();
        DatabaseReference node = db.getReference();
    }
}

这里由 OnClick 按钮调用的方法为:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="process"
    android:text="Read and count the nodes"
    android:textSize="25dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.491"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.66"
    tools:ignore="MissingConstraints,OnClick" />

您可以使用另一种布局来显示从 firebase 数据库中获取的数据。

标签: javaandroidxmlfirebasefirebase-realtime-database

解决方案


计算一个节点的子节点个数,不管是数据库的根节点还是其他节点,请使用以下方法:

private void printChildrenCount(DatabaseReference ref) {
    ref.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DataSnapshot> task) {
            if (task.isSuccessful()) {
                long childrenCount = task.getResult().getChildrenCount();
                Log.d(TAG, "childrenCount: " + childrenCount);
            } else {
                Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
            }
        }
    });
}

要计算根节点的子节点数,请调用上述方法,如下所示:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
printChildrenCount(rootRef);

logcat 中的结果将是:

childrenCount: 3

要计算“students”节点的子节点数,请像这样调用上述方法:

DatabaseReference studentsRef = FirebaseDatabase.getInstance().getReference().child("students");
printChildrenCount(studentsRef);

logcat 中的结果将是:

childrenCount: 2

推荐阅读