Как получить объект из базы данных firebase?

Я пытаюсь получить объект из ArrayList в базе данных, но когда я его извлекаю, один из атрибутов объекта возвращает пустую строку вместо строки, сохраненной в базе данных, однако другие атрибуты возвращают свои значения.

Изображение базы данных:

my database

getAmount возвращает совпадающую строку из базы данных, но getFoodName возвращает пустую строку вместо «яйца»..

 reference.child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                User userProfile=snapshot.getValue(User.class);
                if(userProfile!=null)
                {

                    if(userProfile.morning_List!=null)
                    {
                        for(int i=0;i<userProfile.morning_List.size();i++)
                        {
                            FoodItem foodItem=new FoodItem(userProfile.morning_List.get(i));
                            mFoodList.add(new FoodItem(foodItem.getFoodName(),foodItem.getAmount()));
                        }
                      
                }

класс foodItem

public class FoodItem {
    private String fdName;
    private String amount;
  
    public FoodItem(String foodName, String foodAmount) {
        this.fdName = foodName;
        this.amount=foodAmount;
    }
   

    public String getFoodName() {
        return this.fdName;
    }

    public String getAmount() {
        return this.amount;
    }
}

Список классов адаптера:

public class FoodListAdapter extends RecyclerView.Adapter<FoodListAdapter.FoodViewHolder>{
    private ArrayList<FoodItem> mFoodList;
         
    public static class FoodViewHolder extends RecyclerView.ViewHolder{
        public TextView mFoodName;
        public TextView mAmount;
        public FoodViewHolder(@NonNull View itemView,final OnItemClickListener listener) {
            super(itemView);
            mFoodName = itemView.findViewById(R.id.fdName);
            mAmount = itemView.findViewById(R.id.amount);
         }
    }

    public FoodListAdapter(ArrayList<FoodItem> foodList) {
        mFoodList = foodList;
    }

    @NonNull
    @Override
    public FoodListAdapter.FoodViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.food_item, parent, false);
        FoodViewHolder evh = new FoodViewHolder(v, mListener);
        return evh;

    }

    @Override
    public void onBindViewHolder(@NonNull FoodListAdapter.FoodViewHolder holder, int position) {
        FoodItem currentItem = mFoodList.get(position);
        holder.mFoodName.setText(currentItem.getFoodName());
        holder.mAmount.setText(currentItem.getAmount());
    }
    @Override
    public int getItemCount() {
        return mFoodList.size();      
    }
}
Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
0
0
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, это может быть связано с тем, что ваше поле называется fdName, а свойство в базе данных называется foodName.

Firebase использует геттер и сеттер для определения имени свойства или, если они отсутствуют, имя поля. Итак, он ищет свойство под названием fdName в базе данных.

Решение состоит в том, чтобы переименовать ваше поле, чтобы оно соответствовало имени свойства в базе данных:

public class FoodItem {
    private String foodName; // ?
    private String amount;
  
    public FoodItem(String foodName, String foodAmount) {
        this.foodName = foodName;
        this.amount=foodAmount;
    }
   

    public String getFoodName() {
        return this.foodName; // ?
    }

    public String getAmount() {
        return this.amount;
    }
}

Другие вопросы по теме