【问题标题】:How to retrieve my data inside the random key?如何在随机密钥中检索我的数据?
【发布时间】:2018-09-15 22:06:47
【问题描述】:

我想获取随机键里面的数据,如下图:

我正在使用 Firebase,我尝试了很多东西,但我无法解决这个问题。

public class MainActivity extends AppCompatActivity {

    public RecyclerView recyclerView , recyclerView1 ;
    public DatabaseReference ref;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        {
            ref = FirebaseDatabase.getInstance().getReference().child("Requests");
            recyclerView = (RecyclerView) findViewById(R.id.recycler_food);
            recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager(new LinearLayoutManager(this));

            FirebaseRecyclerAdapter<Food, FoodViewHolder> adapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(
                    Food.class,
                    R.layout.individual_row,
                    FoodViewHolder.class,
                    ref
            ) {
                @Override
                protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int position) {

                    viewHolder.setProductName(model.getProductName());
                    viewHolder.setQuantity(model.getQuantity());

                }
            };
            LinearLayoutManager layoutManager
                    = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
            recyclerView.setAdapter(adapter);
        }

        ref = FirebaseDatabase.getInstance().getReference().child("Requests");
        recyclerView1 = (RecyclerView) findViewById(R.id.recycler_foods);
        recyclerView1.setHasFixedSize(true);
        recyclerView1.setLayoutManager(new LinearLayoutManager(this));

        FirebaseRecyclerAdapter<Food, FoodViewHolder> adapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(
                Food.class,
                R.layout.individual_row,
                FoodViewHolder.class,
                ref
        ) {
            @Override
            protected void populateViewHolder(FoodViewHolder viewHolder, Food model, int position) {

                viewHolder.setProductName(model.getProductName());
                viewHolder.setQuantity(model.getQuantity());

            }
        };
        LinearLayoutManager layoutManager
                = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
        recyclerView1.setAdapter(adapter);
    }

    public static class FoodViewHolder extends RecyclerView.ViewHolder {

        TextView text_productName , text_quantity , text_customername;
        public FoodViewHolder(View itemView) {
            super(itemView);
            text_productName = (TextView) itemView.findViewById(R.id.food_name);
            text_quantity = (TextView) itemView.findViewById(R.id.food_qty);


        }

        public void setProductName(String productName) {
            text_productName.setText(productName);

        }

        public void setQuantity(String quantity) {
                text_quantity.setText(quantity);

        }
    }

【问题讨论】:

  • 先生什么意思?
  • 你想在android中得到它吗?
  • 你能给我一些示例代码,让我不明白吗?谢谢
  • 在安卓系统中是的,先生
  • 在android应用程序中请显示您想要获取此代码的代码

标签: android firebase-realtime-database


【解决方案1】:

您正在Requests 上创建适配器。这意味着回收站视图将显示一个请求列表:因此每个请求对应一行。但是您创建了一个数据类Food 和一个FoodViewHolder,所以看起来您实际上想要显示一个食物列表

要在您的回收站视图中显示食物列表,您的数据库中必须有一个食物列表。例如,您可以通过确定该请求的 DatabaseReference 然后在适配器中显示该请求来显示第一个请求的食物:

DatabaseReference requestsRef = FirebaseDatabase.getInstance().getReference().child("Requests");
Query firstRequestQuery = requestsRef.orderByKey().limitToFirst(1);
firstRequestQuery.addListenerForSingleValueEvent(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) {
    throw databaseError.toException();
  }
}

虽然代码可能存在一些问题,但它演示了如何在回收站视图中显示第一个请求的食物。关键是requestSnapshot.getRef().child("foods"),它确保适配器加载第一个请求的食物。

【讨论】:

  • 如何检索随机密钥sir下的所有数据?特别是产品名称和数量。我想在 recyclerview 中检索该随机键下的所有 productName 和 qty 希望你能帮助我
  • 这条评论与我在回答中解释的内容有何关系?
  • 因为我的问题是如何检索随机键中的数据。
  • 嗨,先生,我应该在 FoodViewHolder 上放什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
相关资源
最近更新 更多