首页 > 解决方案 > 想要将父节点从firebase打印到recyclerview中

问题描述

      FirebaseRecyclerOptions<RestaurantDetails> options =
                new FirebaseRecyclerOptions.Builder<RestaurantDetails>()
                        .setQuery(FirebaseDatabase.getInstance().getReference().child("Restaurant").child("Category"), RestaurantDetails.class)
                        .build();

    @Override
    protected void onBindViewHolder(@NonNull CategoryAdapter.CategoryViewHolder holder, int position, @NonNull RestaurantDetails model) {
        String post_key = getRef(position).getKey();

        holder.restaurant_CategoryList.setText(post_key);

    }

    @NonNull
    @Override
    public CategoryAdapter.CategoryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.restaurant_filter,parent, false);
        return new CategoryViewHolder(view);
    }

    class CategoryViewHolder  extends RecyclerView.ViewHolder{

        TextView  restaurant_CategoryList;

        public CategoryViewHolder(@NonNull View itemView) {
            super(itemView);

            restaurant_CategoryList = itemView.findViewById(R.id.restaurant_Filter);
        }
    }
}

在此处输入图像描述

我想在我的 recyclerview 上打印 post_key,但它只显示一个空页面。只有白屏。没有错误,但我相信我遗漏了一些东西。我只想显示类别。如果我使用另一个节点“信息”,它将打印类别的副本。例如,Cafe,cafe,我只需要单词作为预览

我已经更新了帖子。这是我的餐厅详情。

public class RestaurantDetails {
    private String name;
    private String location;
    private String address;
    private String category;
    private String image;
    private Double latitude;
    private Double longitude;
    private Boolean filter;

public RestaurantDetails(String name, String location, String address, String category, String image, Double latitude, Double longitude, Boolean filter) {
    this.name = name;
    this.location = location;
    this.address = address;
    this.category = category;
    this.image = image;
    this.latitude = latitude;
    this.longitude = longitude;
    this.filter = filter;
}

}

在此处输入图像描述

标签: androidfirebasefirebase-realtime-databasefirebaseui

解决方案


在您的 onBindViewHolder() 中,您需要运行一个循环来获取所有键并打印它们。

DatabaseReference databaseReference1 = FirebaseDatabase.getInstance().getReference("Restaurant");
        Query query1 = databaseReference1.child("Category");
        query1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                    String post_key = dataSnapshot1.getKey();
                    System.out.println(post_key);
                }
            }

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

            }
        });

推荐阅读