![](/img/trans.png)
[英]Android retrieve the data from Firebase and save it in ArrayList
[英]Problem in retrieve data from firebase to arraylist
嗨,伙计们,此代码在从 onDataChange 退出后不返回 arraylist 中的数据,不在 arraylist 中保存数据 >> arraylist 定义全局 >>
public /*List<Item>*/void getListItemData(){
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.org_icon);
ref.child("Items").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren())
{
System.out.println("sda");
Item itt = snapshot.getValue(Item.class);
// Item ittt = new Item(itt.getName(),itt.getPrice(),itt.isFound(),itt.getQuntity());
// listViewItems.add(itt);
orders.add(itt);
System.out.println(itt.getName().toString() + " "+ itt.getPrice().toString());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
}
// ArrayList<Item> listViewItems = new ArrayList<Item>();
);
/* listViewItems.add(new Item("Rice","1000",b));
listViewItems.add(new Item("Beans","1000",b));
listViewItems.add(new Item("Yam","1000",b));
listViewItems.add(new Item("Pizza","1000",b));
listViewItems.add(new Item("Fries","1000",b));*/
// listViewItems.add(new Item(name,price,quentity,found))
// return listViewItems;
}
}
请帮助解决这个问题。
在你的 onDataSetChange 试试这个
list = new ArrayList<>();
for (DataSnapshot ds : dataSnapshott.getChildren()){
final String key_idd = ds.getKey();
Listdata listdata = new Listdata();
String name=ds.child("name").getValue(String.class);
listdata.setName(name);
listdata.setKey_id(key_idd);
list.add(listdata);
}
recycler = new RecyclerviewAdapter(MyContactActivity.this, list);
recyclerview.setAdapter(recycler);
这个正确的代码:
ref.child("Items").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren())
{
Item itt = snapshot.getValue(Item.class);
listViewItems.add(itt);
System.out.println(itt.getName().toString() + " "+ itt.getPrice().toString());
}
OrderAdapter adapter = new OrderAdapter(FruteActivity.this,listViewItems);
storedOrders.setAdapter(adapter);
adapter.registerDataSetObserver(observer);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
}
);
在相同的 onDataChange 方法中添加此代码
OrderAdapter adapter = new OrderAdapter(FruteActivity.this,listViewItems);
storedOrders.setAdapter(adapter);
adapter.registerDataSetObserver(observer);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.