java - 我们如何使用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 数据库中获取的数据。
解决方案
计算一个节点的子节点个数,不管是数据库的根节点还是其他节点,请使用以下方法:
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
推荐阅读
- java - JAXB Marshalling 将特殊字符(变音符号)变成问号 �
- asp.net - 如何使 Visual Studio Publish 尊重“如果较新则复制”设置?
- batch-file - 如何添加可用空间的百分比
- python - 使用“Openpyxl”将 Pandas 数据帧存储为来自 AWS lambda 的 S3 中的 Excel 对象
- networking - 无法从专用网络 ping OPENVPN 客户端
- c++ - Windows 和 Linux 错误中的 DoEvent()
- kotlin - 为什么抽象类可以成为 Kotlin 中的实例?
- c# - 创建和下载文件在一个页面上工作而在另一个页面上失败 - ASP.NET
- c++ - 我尝试使用带有 Arduino Nano 的 PN532 板读取 Standard Mifare 卡,但它读取的是我的代码
- javascript - javascript在数组内的对象中添加缺少的键