如何在随机密钥中检索我的数据? [英] How to retrieve my data inside the random key?

查看:32
本文介绍了如何在随机密钥中检索我的数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在随机密钥中获取数据,如下所示:

I want to get the data inside the random key, as shown here:

我正在使用Firebase,并且已经尝试了很多方法,但是我无法解决这个问题.

I am using Firebase and I have tried a lot of things, but I cannot solve this.

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);

        }
    }

推荐答案

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

You're creating an adapter on Requests. That means that the recycler view will show a list of requests: so one row for each request. But you created a data class Food and a FoodViewHolder, so it seems you actually want to display a list of foods.

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

To display a list of foods in your recycler view, you must have a list of foods in your database. For example, you can show the foods for the first request by determining the DatabaseReference to that request and then showing that in the adapter:

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"),它可以确保适配器加载第一个请求的食物.

While there may be some problems with the code, it demonstrates how to show the foods of the first request in the recycler view. The key is requestSnapshot.getRef().child("foods"), which ensures the adapter loads the foods of the first request.

这篇关于如何在随机密钥中检索我的数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆