要从Firebase将父节点打印到recyclerview中

问题描述 投票:0回答:1
      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);
        }
    }
}

enter image description here

我想在我的recyclerview上打印post_key,但是它只显示一个空白页面。只有白屏。没有错误,但我相信我缺少一些东西。我只想显示类别。如果我使用的另一个节点是“ Info”,它将打印类别的重复项。例如,Cafe,我只要求预览的单词的Cafe

我已经更新了帖子。这是我的RestaurantDetails。

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

}

enter image description here

android firebase firebase-realtime-database firebaseui
1个回答
0
投票

在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) {

            }
        });
© www.soinside.com 2019 - 2024. All rights reserved.