簡體   English   中英

無法調用Android方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM