Невозможно загрузить контент в представлении Recycler с помощью адаптера Firebase UI Recycler - PullRequest
0 голосов
/ 12 апреля 2020

Я пытался заполнить свое представление Recycler из базы данных Firebase Realtime, но это результат: Пустые карты в представлении Recycler

Я почти уверен, что выполнил все шаги. Что удивительно, так это то, что хотя содержимое не загружается, количество загруженных пустых карточек правильное.

Это моя база данных: Изображение базы данных Firebase

Это мой файл макета с видом карты:

<com.google.android.material.card.MaterialCardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:layout_marginTop="10dp"
    android:layout_marginStart="15dp"
    android:layout_marginEnd="15dp"
    app:cardElevation="15dp"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp">

        <ImageView
            android:id="@+id/food_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:srcCompat="@tools:sample/avatars" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:padding="10dp">

            <TextView
                android:id="@+id/food_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ITEM NAME"
                android:textSize="18sp" />

            <LinearLayout
                android:orientation="horizontal"
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:padding="10dp">
                <TextView
                    android:id="@+id/food_price"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="PRICE:"/>
            </LinearLayout>

            <com.google.android.material.button.MaterialButton
                android:id="@+id/addtocart_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                style="?attr/borderlessButtonStyle"
                android:text="ADD TO CART"/>

        </LinearLayout>

    </LinearLayout>



</com.google.android.material.card.MaterialCardView>

Это мой класс модели :

package com.example.dubstep.Model;

public class FoodItem {
    String base_price;
    String name;

    public FoodItem(){

    }

    public FoodItem(String price, String name) {
        this.base_price = price;
        this.name = name;
    }

    public String getBase_price() {
        return base_price;
    }

    public void setBase_price(String base_price) {
        this.base_price = base_price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Вот мой класс ViewHolder:

public class FoodItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    public TextView mFoodItemName;
    public ImageView mFoodImage;
    public TextView mFoodItemPrice;
    public MaterialButton mAddToCart;

    public ItemClickListener listener;

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

        mFoodItemName = (TextView) itemView.findViewById(R.id.food_name);
        mFoodItemPrice = (TextView) itemView.findViewById(R.id.food_price);
        mFoodImage = (ImageView) itemView.findViewById(R.id.food_image);
        mAddToCart = (MaterialButton) itemView.findViewById(R.id.addtocart_btn);
    }

    public void setItemClickListener(ItemClickListener listener){
        this.listener = listener;
    }

    @Override
    public void onClick(View v) {
        listener.onClick(v,getAdapterPosition(),false);
    }
}

Я использовал адаптер Firebase Recycler в своей основной деятельности OnStart:

FirebaseRecyclerOptions<FoodItem> options = new FirebaseRecyclerOptions.Builder<FoodItem>().setQuery(foodref,FoodItem.class).build();
        FirebaseRecyclerAdapter<FoodItem, FoodItemViewHolder> adapter =
                new FirebaseRecyclerAdapter<FoodItem, FoodItemViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull FoodItemViewHolder holder, int position, @NonNull FoodItem model) {

                        holder.mFoodItemName.setText(model.getName());
                        holder.mFoodItemPrice.setText("Price: "+model.getBase_price());

                    }

                    @NonNull
                    @Override
                    public FoodItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.food_item_layout,parent,false);
                        FoodItemViewHolder holder = new FoodItemViewHolder(view);

                        return holder;
                    }
                };

        recyclerView.setAdapter(adapter);
        adapter.startListening();

И в моем OnCreate Я инициализировал свой Диспетчер просмотра и компоновки Recycler:

foodref = FirebaseDatabase.getInstance().getReference().child("food_menu");

recyclerView = findViewById(R.id.main_recyclerview);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(MainActivity.this);
recyclerView.setLayoutManager(layoutManager);

Может ли кто-нибудь мне помочь и сказать, где я могу ошибаться?

Спасибо!

...