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

时间:2019-03-11 15:16:57

标签: android firebase firebase-realtime-database

我想检索“出席”节点下的所有数据,例如“ Present”,“ On Vacation”等。然后我想以ListViewRecycleView显示数据。这样做的基本逻辑是什么?

据我所知:

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);      

    }
}

这是正在提取的数据。

I want to take data under "Attendance" with key and value Both

2 个答案:

答案 0 :(得分:2)

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

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);

答案 1 :(得分:0)

首先检查应用程序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")