Как извлечь дочерние данные в дочернем элементе из firebase?

#android #database #firebase-realtime-database

#Android #База данных #firebase-база данных в реальном времени

Вопрос:

Я новичок в Android и Firebase. Я хотел бы ознакомиться с этими двумя технологиями в рамках проекта. Вот моя проблема. Я изменил структуру базы данных в Firebase и не знаю, как извлечь данные снова.

Вот структура перед:

введите описание изображения здесь

И

После:

введите описание изображения здесь

Это мой код для извлечения данных перед:

      mDatabase = FirebaseDatabase.getInstance().getReference().child("Events");
     mDatabase.keepSynced(true);

    //OnStart 
     FirebaseRecyclerAdapter<Blog, BlogViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Blog, BlogViewHolder>
                (Blog.class, R.layout.blog_row, BlogViewHolder.class, mDatabase) {
            @Override
            protected void populateViewHolder(final BlogViewHolder viewHolder, final Blog model, int position) {
                viewHolder.setTitle(model.getId());
                viewHolder.setTitle(model.getTitle());
                viewHolder.setDate(model.getDate());
                viewHolder.setDesc(model.getDesc());
                viewHolder.setImage(getApplicationContext(), model.getImage());
                final View inflatedView = getLayoutInflater().inflate(R.layout.blog_row, null);
                viewHolder.mView.setOnClickListener(new View.OnClickListener(){
                    @Override
                    public void onClick(View v){
                        Intent intent = new Intent(getApplicationContext(), Join_activity.class);
                        startActivity(intent);
                    }
                });
  

Я пробовал код отсюда и с другой платформы, но я не получаю ответа. Пожалуйста, помогите мне.

Комментарии:

1. Кстати, как показать изображение без ссылки? Я здесь новичок. Извините, если это плохой пост.

2. Могу я спросить, почему вы изменили структуру, чтобы иметь 1,2 внутренних события? Я не думаю, что это хороший дизайн, если вам нужно получить положение этих элементов, вы можете получить их из метода populatevViewModel().

3. Я хочу попробовать другую структуру, сэр. Вы можете мне помочь? @NoelOmondi

Ответ №1:

1 и 2 родительских элемента Expo и training должны быть кнопочными, а не статическими числами.

Для отображения изображения вы должны использовать Glide или Picasso

Проблема с извлечением данных вашей базы данных находится в этой строке

 mDatabase = FirebaseDatabase.getInstance().getReference().child("Events");
  

внутри вашего populateViewHolder , когда вы делаете это

 viewHolder.setTitle(model.getTitle());
  

при попытке запросить какие-либо данные их не будет по вашей ссылке .child("Events") , вместо этого вы должны заменить свою ссылку на что-то статическое или выполнить цикл for, чтобы получить все узлы

 mDatabase = FirebaseDatabase.getInstance().getReference().child("Events").child("1").child("Expo");
  

Комментарии:

1. Хорошо, я попытаюсь изменить это «1,2» на нажимные клавиши. Я понимаю, сэр. Но я попробовал самый нижний код, он выдает ошибку

2. За изображение я это сделал, спасибо, сэр. Это работает

3. Вы имеете в виду, что для цикла мне нужно использовать mDatabase.addValueEventListener? Извините за слишком много вопросов. Мне действительно интересно это.