在Firebase Recycler Adapter中传递查询时,如何从firebase查询中获取所有数据的列表

时间:2018-03-16 07:58:20

标签: android firebase firebase-realtime-database android-recyclerview recycler-adapter

我有一个firebase查询。我已经添加了“addValueEventListener”。 “dataSnapshot”中的“onDataChange”,我看到所有3个应该由查询获取的子数据。

现在,我在Firebase Recycler Adapter中传递此查询引用以创建回收器视图,但我看到视图中只有一个数据而不是所有3个孩子数据。

//这就是我创建查询引用的方式。

currentUser = firebaseAuth.getCurrentUser();
mDatabase = FirebaseDatabase.getInstance().getReference();
ordersRef = mDatabase.child("orders");
ordersQuery = ordersRef.orderByChild("userId").equalTo(currentUser.getUid().toString());

ordersQuery.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            isOrdersEmpty = ! dataSnapshot.hasChildren();
            Log.i("ORDERS: ", "You have orders: " + isOrdersEmpty + dataSnapshot);

            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                Log.i("ORDER: ", "Your ORDER : " + snapshot);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
});

在此之后,我在Firebase Recycler Adapter

中传递此查询引用
FirebaseRecyclerAdapter<Orders, OrdersActivity.OrdersViewHolder> FBRA = new FirebaseRecyclerAdapter<Orders, OrdersViewHolder>(
        Orders.class,
        R.layout.orders_list,
        OrdersActivity.OrdersViewHolder.class,
        ordersQuery
) {
    @Override
    protected void populateViewHolder(OrdersViewHolder viewHolder, Orders model, int position) {
        viewHolder.setOrderId(model.getOrderId());
        viewHolder.setTxnAmount(model.getTxnAmount());
        viewHolder.setTxnId(model.getTxnId());

        final String orderId = getRef(position).getKey().toString();

        viewHolder.mView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent orderDetailActivity = new Intent(OrdersActivity.this, OrderDetailActivity.class);
                orderDetailActivity.putExtra("orderId", orderId);
                startActivity(orderDetailActivity);
            }
        });
    }
};

mOrdersRecyclerView.setAdapter(FBRA);

当我在应用程序中看到视图时,它只显示一个数据,同时它应显示3个数据。

0 个答案:

没有答案