Android 获取FireBase用户节点下的所有数据

Android 获取FireBase用户节点下的所有数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想检索考勤节点下的所有数据,例如“出席”、“休假”等。然后我想在列表视图或回收视图中显示数据。这样做的基本逻辑是什么 就我所知: package com.example.attendancemanagementsystem; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class ViewRecord extends AppCompatActivity { @O

我想检索考勤节点下的所有数据,例如“出席”、“休假”等。然后我想在
列表视图
回收视图
中显示数据。这样做的基本逻辑是什么

就我所知:

package com.example.attendancemanagementsystem;

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

public class ViewRecord extends AppCompatActivity {

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

    }
}
这是正在提取的数据


首先检查应用程序gradle中的依赖项

implementation 'com.google.firebase:firebase-database:16.1.0'
implementation 'com.google.firebase:firebase-core:16.0.7'
初始化变量

private lateinit var mStorageRef: StorageReference
private lateinit var auth: FirebaseAuth
然后获取您的firebase数据库引用

mStorageRef = FirebaseStorage.getInstance().reference
auth = FirebaseAuth.getInstance()
然后从该节点获取所需的数据

StorageRef.child("Users/${auth.currentUser!!.uid}/attendance")

根据您的评论,要在
列表视图中显示所有这些值,请使用以下代码:

ListView listView = (ListView) findViewById(R.id.list_view);
List<String> values = new ArrayList<>();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, values;
listView.setAdapter(arrayAdapter);

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference attendanceRef = rootRef.child("Users").child(uid).child("Attendance");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String key = ds.getKey();
            String value = ds.getValue(String.class);
            values.add(key + ", " + value);
        }
        arrayAdapter.notifyDatasetChanged();
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
attendanceRef.addListenerForSingleValueEvent(valueEventListener);
ListView ListView=(ListView)findViewById(R.id.list\u视图);
列表值=新的ArrayList();
ArrayAdapter ArrayAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u list\u item\u 1,值;
setAdapter(arrayAdapter);
字符串uid=FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
DatabaseReference attendencef=rootRef.child(“用户”).child(uid.child(“出勤”);
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
String key=ds.getKey();
String value=ds.getValue(String.class);
添加(键+”,“+值);
}
arrayAdapter.notifyDatasetChanged();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Log.d(标记,databaseError.getMessage());//不要忽略错误!
}
};
Attendancef.addListenerForSingleValueEvent(valueEventListener);

在哪个Firebase子项下?在“出勤”下所以你想得到所有这些值,
现在
休假
等等,对吗?是的,你是对的..我想在列表视图或回收视图中显示它们…Alex MamoCan你可以给你的代码添加一些解释,以便其他人可以从中学习吗?很好..我现在正在得到数据,,,但我还想要一件事…我想要这些值带着钥匙…bcz我需要学生出席或缺席的日期,,,我怎么做,,,,非常感谢..很高兴听到它起作用:)在这种情况下,请查看我的更新答案。哇…如此快速和准确…非常感谢…满足了我的所有要求。。。。