Как читать данные из всех ключей из базы данных Firebase в реальном времени - PullRequest
0 голосов
/ 06 января 2019

Я хочу получить данные всех пользователей (включая пользователя, вошедшего в систему). Проблема, с которой я столкнулся, заключается в том, что, используя мой следующий код, я прочитал данные только зарегистрированного пользователя (пусть ключ равен 01Rn ..), пока я хочу получить все данные (ключ FJHdk .. также).

Я хочу показать данные в ключах 01Rn ... и FJHdk ... в узле books. Но я получаю данные только в ключе 01Rn ....

Uid = FirebaseAuth.getInstance (). GetCurrentUser (). GetUid ();

mdatabasereference = FirebaseDatabase.getInstance () getReference () ребенок ( "Sell") ребенок ( "Книга") ребенок (UID),....

@Override
public void onStart() {
    super.onStart();
    FirebaseRecyclerOptions<b_ooks> options = new FirebaseRecyclerOptions.Builder<b_ooks>()
                                                   .setQuery(mdatabasereference,b_ooks.class)
                                                   .build();
    FirebaseRecyclerAdapter<b_ooks,booksViewHolder> recyclerAdapter = new FirebaseRecyclerAdapter<b_ooks, booksViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull final booksViewHolder holder, int position, @NonNull final b_ooks model) {


            mdatabasereference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                     for(DataSnapshot postsnapshot : dataSnapshot.getChildren()) {
                           for (DataSnapshot data : postsnapshot.getChildren()) {
                             holder.Title.setText(model.getTitle());
                             holder.Price.setText(model.getPrice());
                         }

                     }

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

1 Ответ

0 голосов
/ 06 января 2019

Чтобы обработать книги для всех пользователей, создайте ссылку на данные на один уровень выше в JSON:

DatabaseReference booksRef = FirebaseDatabase.getInstance().getReference().child("Sell").child("Books");

А затем добавьте дополнительный вид в onDataChange, чтобы перебрать пользовательские узлы в DataSnapshot:

booksRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
            for(DataSnapshot bookSnapshot : dataSnapshot.getChildren()) {
                System.out.println(bookSnapshot.getKey());
                System.out.println(bookSnapshot.child("Title").getValue(String.class));
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...