Данные не приходят в мое приложение из базы - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь загрузить изображение и имя из базы данных Firebase в мое приложение в RecyclerView, но когда я запускаю его, оно не показывает изображение и имя без ошибок, вот мой код.

  //Load menu
    recycler_menu=(RecyclerView)findViewById(R.id.recycler_menu);
    recycler_menu.setHasFixedSize(true);
    layoutManager= new LinearLayoutManager(this);
    recycler_menu.setLayoutManager(layoutManager);
    loadMenu();

}
  private void loadMenu(){
      FirebaseRecyclerOptions<Category> options = new FirebaseRecyclerOptions.Builder<Category>().setQuery(category, Category.class).build();
          FirebaseRecyclerAdapter<Category, MenuViewHolder> adapter= new FirebaseRecyclerAdapter<Category, MenuViewHolder>(options){
              @Override
              public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                  View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.menu_item, parent, false);

                  MenuViewHolder viewHolder = new MenuViewHolder(view);

                  return viewHolder;
              }
           @Override
           protected void onBindViewHolder(MenuViewHolder holder, int position, Category model) {
               holder.txtMenuName.setText(model.getName());
               Picasso.with(getBaseContext()).load(model.getImage()).into(holder.imageView);
           }
           };
       recycler_menu.setAdapter(adapter);
   }

Мой код работает нормально, но изображение и имя не отображаются, отображается пустое действие. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Это одна из основных проблем, с которой вы обычно сталкиваетесь, когда используете Firebase в качестве базы данных. Я не мог видеть, где вы извлекаете свои данные, но проблема, скорее всего, заключается в том, что прослушиватели событий Firebase работают асинхронно. По-другому, ваш метод возвращает до того, как вы получите данные. В моем проекте я решил эту проблему путем извлечения данных из onCreateView или onCreate , а затем использовал эти значения в других методах. Если это не так, я просто делаю работу внутри прослушивателя событий, если мне нужно (это сделает ваш код чрезвычайно сложным и нечитаемым). Было бы более полезно, если бы вы провели больше исследований о Firebase и его асинхронном стиле работы.

Если вы как-то нашли лучший способ решить эту проблему, пожалуйста, прокомментируйте ниже, чтобы я тоже мог его использовать. Я все еще ищу лучший путь.

0 голосов
/ 09 мая 2018

Просто добавьте adapter.startListening() в OnStart, чтобы запустить прослушиватель данных, и adapter.stopListening() в onStop, чтобы остановить его следующим образом:

@Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...