【问题标题】:Firebase listener returning all children when i only want a specific child当我只想要一个特定的孩子时,Firebase 监听器返回所有孩子
【发布时间】:2017-04-14 01:07:42
【问题描述】:

这是我的数据库结构:

这是我的代码:

mDatabase.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            getTasks(dataSnapshot);
            mTasksRecyclerView.setVisibility(View.VISIBLE);
            mProgressBar.setVisibility(View.INVISIBLE);
        }
.
.
.

//populate recyclerview with data from firebase
private void getTasks(DataSnapshot dataSnapshot) {
    for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
        mTasks.add(singleSnapshot.getValue(Task.class));
    }
    Collections.sort(mTasks);
    mAdapter = new TaskAdapter(mTasks, getContext());
    mTasksRecyclerView.setAdapter(mAdapter);

问题是此代码检索数据库、任务和用户中的所有内容,并以某种方式将用户对象添加到我的任务数组列表中,并导致空白项目显示在我的回收站视图中。我可以使用什么代码仅检索数据库的“任务”部分中的项目?

我知道这是因为 datasnapshot.getChildren 正在返回数据库中的所有内容。我认为使用 datasnapshot.child("Tasks") 会起作用,但它没有。

【问题讨论】:

  • 你能发布路径供你的数据库参考吗?

标签: android database firebase firebase-realtime-database firebase-storage


【解决方案1】:
datasnapshot.child("Tasks") 

将不起作用,您需要在数据库引用中引用 Tasks 表,然后将 childEventListener 添加到其中。试试这个吧。

DatabaseReference ref = mDatabase.child("Tasks");
ref.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
        getTasks(dataSnapshot);
        mTasksRecyclerView.setVisibility(View.VISIBLE);
        mProgressBar.setVisibility(View.INVISIBLE);
    } 

希望对你有帮助

【讨论】:

    【解决方案2】:

    关键是在数据引用中设置路径。你需要做的:

    DatabaseReference db = mDatabase.child("Tasks").child("YourTask");
       db.addChildEventListener(new ChildEventListener(){
       @Override
       public void onChildAdded...
       @Override
       public void onChildRemoved...
       @Override
       public void onChildUpdated...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多