Я хочу установить значение счетчика для каждого созданного пользователем сообщения и сохранить его в базе данных.так что в представлении переработчика я могу 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](https://i.stack.imgur.com/4YCtW.png)