在Android Studio中从Firebase读取多个孩子

时间:2018-11-27 18:18:10

标签: java android firebase android-studio firebase-realtime-database

我正在用android studio创建一个考勤应用。其中的一部分包括一个历史记录按钮,其中列出了学生的个人出勤历史记录。但是,在指定路径时读取数据时遇到麻烦。我已经搜索了各种解决方案,但似乎无法弄清楚。有什么想法吗?

package com.example.android.teamnahhseproject;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.*;

public class attendance_history_student extends AppCompatActivity {

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference reference = database.getReference("teamnahh-7d81b/student_users/Alisha Tapiawala/classes/CS 3354_003");
String attendance_text;
TextView textBox;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_attendance_history_student);

    textBox = findViewById(R.id.attendance);

    reference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                attendance_text = postSnapshot.getValue(String.class);
                textBox.append(attendance_text + "\n");
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) { }
    });
}

}

realtime database data

我正在尝试打印出“ CS 3354_003”的所有子项

2 个答案:

答案 0 :(得分:0)

这是您可以做的:

ArrayList<String> presence = new ArrayList<String>();
DatabaseReference dbref = FirebaseDatabase.getInstance().getReference("student_users/Alisha Tapiwala/classes/CS3354_003");
ValueEventListener listener = new ValueEventListener() {
     @Override
     onDataChange(DataSnapshot dataSnapshot){
         for( DataSnapshot children : dataSnapshot.getChildren(){
             presence.add(children.child(" ").getValue(String.class));
             //presence is now containing the values from the database. 
         }
    }
};
dbref.addValueEventListener(listener);

很抱歉,如果格式不正确,尤其是{}。我在手机上做到了。如果您仍然收到错误,请检查this documentation。我希望这会有所帮助。

答案 1 :(得分:0)

要解决此问题,请更改以下代码行:

DatabaseReference reference = database.getReference("teamnahh-7d81b/student_users/Alisha Tapiawala/classes/CS 3354_003");

DatabaseReference reference = database.getReference("student_users/Alisha Tapiawala/classes/CS 3354_003");

您的参考文献中不需要teamnahh-7d81b