Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法解决此问题的eventlistener与列表_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 无法解决此问题的eventlistener与列表

Android 无法解决此问题的eventlistener与列表,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,很久以来,我一直在努力解决这个问题 我有一个名为datalist的列表,其中存储了来自firebase的数据,以便在recyclerview中使用它 但问题是在childeventlistener中,列表正在更新,但在此之前,会进行返回调用,结果是列表为空 应该怎么做 package com.example.dell.hungryapp; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.

很久以来,我一直在努力解决这个问题

我有一个名为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;


}
}
package com.example.dell.hungryapp;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
导入com.google.firebase.database.ChildEventListener;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入java.util.ArrayList;
导入java.util.List;
/**
*由戴尔于2017年5月29日创建。
*/
公共类项目模型{
公共字符串项目名称;
公共整数;
公共字符串getItem_name(){
返回项目名称;
}
public void setItem_name(字符串item_name){
this.item\u name=item\u name;
}
公共整数getQuantity(){
退货数量;
}
公共无效设置数量(整数数量){
这个。数量=数量;
}
公共静态列表getObjectList(){
最终列表数据列表=新的ArrayList();
DatabaseReference DatabaseReference=FirebaseDatabase.getInstance().getReference();
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
databaseReference.child(“用户”).child(user.getUid()).child(“库存”).addChildEventListener(新的ChildEventListener()){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
System.out.println(“值为:”+dataSnapshot.getValue());
String id=dataSnapshot.getKey();
整数数量=dataSnapshot.getValue(Integer.class);
itemmodel item=新的itemmodel();
item.setItem_名称(id);
项目设置数量(数量);
数据列表。添加(项);
System.out.println(“大小之前:+datalist.size());
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
}
@凌驾
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
System.out.println(“大小之前:+datalist.size());
返回数据列表;
}
}

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

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


希望它能解决您的问题

嗨@akshay naik我担心它无法解决我的问题,但返回后数据列表显示为空