Я пытался заполнить свое представление 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);
Может ли кто-нибудь мне помочь и сказать, где я могу ошибаться?
Спасибо!