繁体   English   中英

如何从Firebase实时数据库中检索列表?

[英]How to retrieve list from firebase realtime database?

我正在开发出勤应用程序。 我想检索带有礼物数量的学生列表,并将其填充在列表视图中。

我试过下面的代码,但我得到了一位特定学生的礼物。

 DatabaseReference ref = 
 FirebaseDatabase.getInstance().getReference().child("Students 
 Attendance").child(selectedItem).child(id).child(subject);
 ref.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.getValue() != null) {

        Userlist.add(dataSnapshot.getValue().toString());
        addStudents(Userlist);
                      }else {
          Toast.makeText(getApplicationContext(), "****NO Record 
          FOUND****", Toast.LENGTH_LONG).show();
                      }
                  }

我希望输出为学生列表,并在列表视图中填充礼物数量。

我的firebase结构

我想要这种结果

由于您要制作的应用程序可以计算特定学生的礼物数量。 您可以这样操作:

首先,您可以将要存储在数据库中的值设置为: mFirebaseDatabaseReference.push().setValue(new String[]{student_name,attendance})

这会将数据存储为:-Sam,70和Mike,75

现在使用ChildEventListener检索该数据:

mChildEventListener = new ChildEventListener() {
   @Override
   public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
     String data = dataSnapshot.getValue();
     mMyAdapter.add(data);
);

这里要注意的一件事是,您不必在此处使用push()方法时放置student_id,因此它会为每个孩子提供一个新的ID,这样我们就不必担心数据会因以下原因而受到干扰:相同的名称或标记。

     ref.addChildEventListener(new ChildEventListener() {
           @Override
           public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            if (dataSnapshot.exists()) {                      
             String value = dataSnapshot.getValue().toString();
             String key = dataSnapshot.getKey();
             String record = key + ":              " + value;
                        Userlist.add(record);
                        addStudents(Userlist);
         }

它为我工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM