![](/img/trans.png)
[英](Android) onNavigationItemSelected method not being called
[英]Android method not being called
在我片段的onCreateView中,我運行此方法
List<Product> mProducts = Database.getDatabase(mRef).getProducts();
這是我的數據庫類:
public class Database {
private FirebaseDatabase mDb;
private DatabaseReference dbRef;
private static Database sDatabase;
private List<Product> mProducts;
public static Database getDatabase(DatabaseReference ref) {
if(sDatabase == null) {
sDatabase = new Database(ref);
}
return sDatabase;
}
public Database(DatabaseReference mReference) {
this.mDb = FirebaseDatabase.getInstance();
this.dbRef = mReference;
}
public List<Product> getProducts() {
mProducts = new ArrayList<>();
dbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data : dataSnapshot.getChildren()) {
mProducts.add(data.getValue(Product.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return mProducts;
}
通過調試器時,不會調用getProducts()方法,它會創建一個新的Database實例,而永遠不會到達getProducts()方法。 稍后的列表用於recyclerView適配器。
mProducts將為空列表,因為addValueEventListener需要一些時間才能返回,並且u在設置偵聽器后立即返回值解決方案是,當您在回調方法onDataChange中獲得產品列表時,您必須發送回一些回調
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.