#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? Извините за слишком много вопросов. Мне действительно интересно это.