【问题标题】:Getting all data under FireBase user node获取 FireBase 用户节点下的所有数据
【发布时间】:2019-03-12 03:33:25
【问题描述】:

我想检索出勤节点下的所有数据,例如“出席”、“休假”等。然后我想在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);      

    }
}

这是正在提取的数据。

【问题讨论】:

  • 在哪个 Firebase 子项下?
  • 在“出勤”下
  • 所以你想获取所有这些值,PresentOn Leave 等等,对吧?
  • 是的,你说得对..我想在列表视图或回收视图中显示它们...Alex Mamo

标签: android firebase firebase-realtime-database


【解决方案1】:

根据您的评论,要在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);

【讨论】:

  • 完美..它的工作我现在正在获取数据,,,但我还想要一件事......我想要值和键......bcz我需要学生的日期存在或不存在,,,我该怎么做,,...非常感谢..
  • 很高兴听到它有效 :) 在这种情况下,请查看我的更新答案。
  • 哇哇...这么快,这么准确....非常感谢....满足了我的所有要求....
【解决方案2】:

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

【讨论】:

  • 您能否在您的代码中添加一些解释,以便其他人可以从中学习?
猜你喜欢
  • 2018-02-18
  • 1970-01-01
  • 1970-01-01
  • 2018-09-22
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
相关资源
最近更新 更多