Faceci Jestem zajęci migrację mojej aplikacji na Androida napisane w Javie, aby trzepotać, ale mam problem.

Poniżej znajduje się kod, który mam walkę z konwertowaniem do trzepotania. Czy jest jakiś sposób, jaki mogę go konwertować.

posts_ref = db.ref('Posts');
      posts_ref.onValue.listen((e) {
        DataSnapshot datasnapshot = e.snapshot;
        int i = 0;
        if(datasnapshot.numChildren() != null){
          Post post = datasnapshot.val();
          if(post.publisher == user.uid){
            i++;

            posts = i.toString();

          }
        }
      });

Poniżej znajduje się mój kod Java w mojej aplikacji na Androida.

private void getNrPosts(){
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Posts");
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NotNull DataSnapshot dataSnapshot) {
                int i = 0;
                for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                    Post post = snapshot.getValue(Post.class);
                    if (post.getPublisher().equals(firebaseUser.getUid())){
                        i++;
                    }
                }
                posts.setText(MessageFormat.format("{0}", i));
            }

            @Override
            public void onCancelled(@NotNull DatabaseError databaseError) {

            }
        });
  }

Cała pomoc będzie bardzo przydatna i dziękuję z góry!

0
Tihan-Nico Paxton 28 październik 2020, 01:57

1 odpowiedź

Najlepsza odpowiedź

Problem polega na tym, że biblioteka trzepotania dla bazy danych w czasie rzeczywistym nie ma bezpośredniego ekwiwalentu:

for (DataSnapshot snapshot : dataSnapshot.getChildren()){

Jest a żądanie funkcji dla niego na repo dla biblioteki, ale wygląda tak był zamknięty.

W międzyczasie możesz słuchać wydarzeń onChild..., aby wykonać to samo. Alternatywnie można użyć FirebaseList w bibliotece, aby wykonać to samo.

Zobacz moją długą odpowiedź tutaj na przykład zarówno: trzepotanie: baza danych FireBase Baza danych w czasie rzeczywistym DanebyChild nie ma wpływu na wynik zapytania

0
Frank van Puffelen 27 październik 2020, 23:22