【问题标题】:Stuck with this issue of eventlistener with list卡住了这个带有列表的事件监听器的问题
【发布时间】:2017-05-31 15:02:12
【问题描述】:

一直在努力解决这个问题

我有一个名为 datalist 的列表,我在其中存储来自 firebase 的数据,以便在 recyclerview 中使用它。

但问题出在 childeventlistener 内部,列表正在更新,但在此之前进行了返回调用,它最终出现在一个空列表中。

应该怎么做?

package com.example.dell.hungryapp;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Dell on 5/29/2017.
 */

public class itemmodel {
public String item_name;
public  int quantity;


public String getItem_name() {
    return item_name;
}

public void setItem_name(String item_name) {
    this.item_name = item_name;
}

public int getQuantity() {
    return quantity;
}

public void setQuantity(int quantity) {
    this.quantity = quantity;
}


public static List<itemmodel> getObjectList(){


    final List<itemmodel> datalist=new ArrayList<>();
    DatabaseReference databaseReference= FirebaseDatabase.getInstance().getReference();
    FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();




    databaseReference.child("Users").child(user.getUid()).child("Inventory").addChildEventListener(new ChildEventListener() {
       @Override
       public void onChildAdded(DataSnapshot dataSnapshot, String s) {
           System.out.println("value is : "+dataSnapshot.getValue());

           String id=dataSnapshot.getKey();
           Integer qty=dataSnapshot.getValue(Integer.class);

           itemmodel item=new itemmodel();
           item.setItem_name(id);
           item.setQuantity(qty);

           datalist.add(item);

           System.out.println("before size : "+datalist.size());

       }

       @Override
       public void onChildChanged(DataSnapshot dataSnapshot, String s) {

       }

       @Override
       public void onChildRemoved(DataSnapshot dataSnapshot) {

       }

       @Override
       public void onChildMoved(DataSnapshot dataSnapshot, String s) {

       }

       @Override
       public void onCancelled(DatabaseError databaseError) {

       }
   });



    System.out.println("before size : "+datalist.size());
    return datalist;


}
}

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    如果您想从库存中检索全部数据,请点击此链接。我使用地图来检索整个数据并将其存储在数组列表中

    final DatabaseReference myRef = database.getReference().child("users").child(users.getUid).child("Inventory");
    

    Remove the previous markers as the location updates

    希望它能解决你的问题

    【讨论】:

    • 嗨@akshay naik 恐怕它无法解决我的问题,但返回后数据列表仍显示为空
    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2010-11-16
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多