如何从Firebase中检索所有数据

时间:2019-12-16 06:43:37

标签: android firebase firebase-realtime-database

我是Android Studio和Firebase的新手。

我正在尝试从Firebase检索数据。我有节点Orders,并且该节点具有唯一的idchoicesprice

这是我的Firebase的外观:

my-application0-8b65a
    Orders
        - Lw4hgcNwuCitXUKHdNh
          choices:"Pasta\n"
          price:19
        - Lw7zID257gZsJN9s0J3
          choices:"Shawarma\nPasta\n"
          price: 27

我尝试使用addValueEventListener来检索大学的所有订单,但是当我运行该应用程序并转到检索页面时,它又返回到主要活动页面。我正在使用listview(id:list_view)来显示数据。

code

public class DataRetrived extends AppCompatActivity {    

    private DatabaseReference mDatabase;
    private ListView mUserList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dataactivity);
        mDatabase = FirebaseDatabase.getInstance().getReference();
        mUserList = findViewById(R.id.list_view);

        final List<Orders> ordersList = new ArrayList<>();
        mDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {
                ordersList.clear();

                for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                    Orders orders = postSnapshot.getValue(Orders.class);
                    ordersList.add(orders);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                System.out.println("The read failed: ");
            }
        });
    }
}

2 个答案:

答案 0 :(得分:0)

Firebase ref =新的Firebase(FIREBASE_URL);

ref.addValueEventListener(new ValueEventListener(){

@Override

public void onDataChange(DataSnapshot快照){

Log.e(“ Count”,“” + snapshot.getChildrenCount());

对于(DataSnapshot postSnapshot:snapshot.getChildren()){

<YourClass> post = postSnapshot.getValue(<YourClass>.class);

Log.e("Get Data", post.<YourMethod>());

}

}

@Override

public void onCancelled(FirebaseError firebaseError){

Log.e(“读取失败:”,firebaseError.getMessage());

}

});

答案 1 :(得分:0)

首先添加对节点Orders的引用,然后在onDataChange内删除for循环以能够检索对象Orders

更改此:

mDatabase = FirebaseDatabase.getInstance().getReference();

对此:

mDatabase = FirebaseDatabase.getInstance().getReference("Orders");

然后将onDataChange()更改为以下内容:

  public void onDataChange(DataSnapshot snapshot) {
          ordersList.clear();
                Orders orders = snapshot.getValue(Orders.class);
                ordersList.add(orders);
        }