我試圖從我的firebase數據庫中獲取項目列表......但是我有一個獲取它們的問題。 我的代碼看起來或多或少是這樣的:查詢來自Firebase的數據
List<Items> itemsList;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_work_items_report);
itemsList = GetItems();
}
而且應該返回我的項目的方法是這樣的:
private ArrayList<Items> GetItems(){
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = database.child("items");
final ArrayList<Items> itemsRez = new ArrayList<Items>();
Query itemsQuery = ref.orderByChild("type");
itemsQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
Items item = singleSnapshot.getValue(Items.class);
itemsRez.add(item);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return itemsRez;
}
的GetItems()總是返回我一個空列表,這還挺有道理,因爲沒有什麼可以在我返回這個列表之前觸發onDataChange事件,所以我的問題是......我怎樣才能讓這個方法返回數據庫中的項目列表?
什麼是錯的利用內幕onDataChange數據?阻塞UI線程是一個壞主意。 – Selvin
你說得對,我認爲最好在onDataChange中做。但是,即使這不是我所做的最好的想法,我該怎麼做呢? –
移動onDataChange中使用itemsList的代碼 – Selvin