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 이벤트를 발생시키는 것이 없으므로 내 질문은 ... 어떻게이 메서드를 사용하여 DB에서 항목 목록을 반환 할 수 있습니까?
onDataChange 내부 데이터를 사용하여 뭐가 문제? 스레드를 차단하는 것은 나쁜 생각입니다. – Selvin
맞아, 나는 onDataChange에서 그것을하는 것이 더 낫다고 생각한다. 하지만 여전히 내가하는 일이 최선의 아이디어가 아니더라도 어떻게 할 수 있습니까? –
itemsList를 사용중인 코드를 onDataChange로 이동하십시오. – Selvin