繁体   English   中英

从firebase检索数据到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM