Счетчик EventValueListener не считается для подсчета количества базы данных - PullRequest
0 голосов
/ 15 декабря 2018

Я хочу установить значение счетчика для каждого созданного пользователем сообщения и сохранить его в базе данных.так что в представлении переработчика я могу PostRef.orderByChild("counter");

Пользователь 1 опубликовать затем установить значение начала счетчика 0, затем другой пользователь или тот же пользователь разместил

Значение счетчика должно быть 1, затем 2,3, 4, 5 и т. Д. (Должно учитываться с getChildrenCount(); , но не работает, почему? показывает номер 9

Я также поставил StoringPostToFirebaseStorage(); под countPosts = dataSnapshot.getChildrenCount();строка в нем работает для подсчета 1, 2, 3, но она также обновляет старый пост до того же номера, что и новый, только что опубликованный.

Я неправильно его кодирую?

PostsRef:

PostsRef = FirebaseDatabase.getInstance().getReference().child("posts");

счетчик:

private void CounterPosts() {
  PostsRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
      if (dataSnapshot.exists()) {
        countPosts = dataSnapshot.getChildrenCount();


      } else {
        countPosts = 0;
      }
      StoringPostToFirebaseStorage();
    }
    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
  });
}

StoringPostToFirebaseStorage ();

private void StoringPostToFirebaseStorage() {
  LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
  longitudesave = location.getLongitude();
  latitudesave = location.getLatitude();

  //edit test 1 HashMap<String, Object> postsMap = new HashMap<>();
  HashMap postsMap = new HashMap();
  postsMap.put("uid", current_user_id);
  postsMap.put("posttext", PostIntiText);
  postsMap.put("date", saveCurrentDateForUser);
  postsMap.put("time", saveCurrentTimeForUser);
  postsMap.put("postimage", downloadImageUrl);
  postsMap.put("longitude", longitudesave);
  postsMap.put("latitude", latitudesave);
  postsMap.put("district", district);
  postsMap.put("city", city);
  postsMap.put("counter", countPosts);
  PostsRef.child(current_user_id + postRandomKey).updateChildren(postsMap)
    .addOnCompleteListener(new OnCompleteListener < Void > () {
      @Override
      public void onComplete(@NonNull Task < Void > task) {
        if (task.isSuccessful()) {
          SendUserToMainActivity();
          Toast.makeText(PostActivity.this, "Posted successfully", Toast.LENGTH_SHORT).show();
          loadingBar.dismiss();
        } else {
          String errormessage = task.getException().toString();
          Toast.makeText(PostActivity.this, "Error:" + errormessage, Toast.LENGTH_SHORT).show();
          loadingBar.dismiss();
        }
      }
    });
}

Образ базы данных

enter image description here

...