【问题标题】:How to get the last two nodes?如何获得最后两个节点?
【发布时间】:2019-02-21 05:29:44
【问题描述】:

这是数据库结构

如何获取最后两个节点?

public class MainActivity extends AppCompatActivity {

public RecyclerView recyclerView , recyclerView1 ;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
        final DatabaseReference requestsRef = FirebaseDatabase.getInstance().getReference().child("Requests");
        recyclerView = (RecyclerView) findViewById(R.id.recycler_foods);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        Query firstRequestQuery = requestsRef.orderByKey().limitToFirst(1);
        firstRequestQuery.addValueEventListener(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for (DataSnapshot requestSnapshot: dataSnapshot.getChildren()){


                    FirebaseRecyclerAdapter<Food,FoodViewHolder> adapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(
                            Food.class,
                            R.layout.individual_row,
                            FoodViewHolder.class,
                            requestSnapshot.getRef().child("foods")



                    ) {
                        @Override
                        protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int position) {
                            viewHolder.setProductName(model.getProductName());
                            viewHolder.setQuantity(model.getQuantity());

                        }
                    };


                    recyclerView.setAdapter(adapter);
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }

        });

【问题讨论】:

  • 嘿@KurtSarmiento 确实将答案标记为正确,因为这有助于堆栈溢出类似问题的人们,我也很感激。干杯! :)

标签: android firebase firebase-realtime-database


【解决方案1】:

您只需要正确使用DatabaseReference。您可以使用它们的名称和正确的FirebaseDatabase 引用访问数据库中的所有节点。

我的意思是,在代码中看起来像这样:

DatbaseReference ref = FirebaseDatabase.getInstance().getReference().child("Requests").child(specialNumber).child("foods").child(0);

ref.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for(DataSnapshot data: dataSnapshot.getChildren()){
                           int value = dataSnapshot.child("productId");
                            int value2 = dataSnapshot.child("quantity");

                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

此外,为避免投反对票,请在提出新问题之前搜索与您的问题相似的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2019-07-06
    • 2021-12-31
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多