Обновить значения расчета в базе данных Firebase RealTimeAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Обновить значения расчета в базе данных Firebase RealTime

Сообщение Anonymous »

Я создал простую базу данных, когда пользователь вводит новые данные, создается база данных для расчета количества сообщений, введенных пользователем, и это хорошо работает в надстройке, проблема в том, что в процессе удаления база данных не обновляется путем уменьшения значения, т.е. если оно было 1, а при удалении оно должно стать 0, для тех, кто этого не делает, значение остается 1
Этот код на случай дополнение

Код: Выделить всё

private void Poste(){
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference countRef = FirebaseDatabase.getInstance()
.getReference("dbStatis")
.child("Clinics")
.child(userId);
countRef.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Integer currentValue = mutableData.getValue(Integer.class);
if (currentValue == null) {
// Handle the case where the value is initially null
currentValue = 0;
}
// Decrement the value
int newValue = Math.max(0, currentValue + 1);
mutableData.setValue(newValue);
return Transaction.success(mutableData);
}
@Override
public void onComplete(DatabaseError error, boolean committed,
DataSnapshot currentData) {
if (error != null) {
Log.w(TAG, "Transaction failed:", error.toException());
} else {
Log.d(TAG, "Transaction committed.");
}
}
});
}
я вызываю код в onCreate Poste(); Если добавление прошло успешно
при удалении данных

Код: Выделить всё

private void DeleteData(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to delete the recording           permanently?");
builder.setPositiveButton("نعم", (dialog, which) -> {
final DatabaseReference reference = FirebaseDatabase.getInstance().getReference("dbClinics");
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageReference = storage.getReferenceFromUrl(imageUrl);
storageReference.delete().addOnSuccessListener(new OnSuccessListener() {
@Override
public void onSuccess(Void unused) {
reference.child(key).removeValue();
PosteDes();
Toast.makeText(DetailClinic.this, "Permanently deleted", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(), HomeClinics.class));
AnimationOut();
finish();
}
});
});
builder.setNegativeButton("no", (dialog, which) -> {
dialog.dismiss();

});
AlertDialog dialog = builder.create();
dialog.show();

}
private void PosteDes(){
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference countRef = FirebaseDatabase.getInstance()
.getReference("dbStatis")
.child("Clinics")
.child(userId);

countRef.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
Integer currentValue = mutableData.getValue(Integer.class);
if (currentValue == null) {
// Handle the case where the value is initially null
currentValue = 0;
}

// Decrement the value
int newValue = Math.max(0, currentValue - 1);
mutableData.setValue(newValue);

return Transaction.success(mutableData);
}

@Override
public void onComplete(DatabaseError error, boolean committed,
DataSnapshot currentData) {
if (error != null) {
Log.w(TAG, "Transaction failed:", error.toException());
} else {
Log.d(TAG, "Transaction committed.");
}
}
});
}
я вызываю код в onCreate PosteDes(); Если удаление прошло успешно

Подробнее здесь: https://stackoverflow.com/questions/792 ... e-database
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»