2017-05-31 79 views
-2

一直在努力解決這個問題這麼久堅持EventListener的這一問題列表

我有一個名爲DataList控件列表中,我才能在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; 


} 
} 

回答

-1

請點擊此鏈接。我曾經爲了獲取整個數據使用的地圖,並將其存儲在數組列表

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

Remove the previous markers as the location updates

希望它可以解決您的問題

+0

喜@akshay奈克恐怕就不可能仍然解決我的問題datalist在返回後顯示爲空 –