Android 无法解决此问题的eventlistener与列表
很久以来,我一直在努力解决这个问题 我有一个名为datalist的列表,其中存储了来自firebase的数据,以便在recyclerview中使用它 但问题是在childeventlistener中,列表正在更新,但在此之前,会进行返回调用,结果是列表为空 应该怎么做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.
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我担心它无法解决我的问题,但返回后数据列表显示为空