Здравствуйте. Я хочу получить ID пользователя, затем отредактировать его и вернуть обратно.Но всегда, когда я кладу его обратно, он повторяет весь процесс, который находится внутри ValueEventListener.
builder.setItems(options, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
Intent intent = new Intent(mContext, NatursteineDetailsActivity.class);
mContext.startActivity(intent);
}
if (which == 1) {
id.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, id.size());
String userFirebaseID = Prevalent.CurrentOnlineUser.getNachname() + ", " + Prevalent.CurrentOnlineUser.getName() + ", " + Prevalent.CurrentOnlineUser.getTelefon();
final DatabaseReference rootRef;
rootRef = FirebaseDatabase.getInstance().getReference().child("Benutzer").child(userFirebaseID);
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String id;
String[] ids;
int length;
bestellungen = dataSnapshot.child("natursteineBestellungen").getValue().toString();
ids = bestellungen.split("/");
length = ids.length;
id = holder.txtID.getText().toString();
for (int i = 0; length > i; i++) {
arrayList.add(ids[i]);
}
for (int i = 0; length > i; i++) {
if (arrayList.get(i).equals(id)) {
arrayList.remove(arrayList.get(i));
break;
}
}
updateFirebaseBestellung(arrayList, rootRef);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//Toast.makeText(mContext, bestellungen, Toast.LENGTH_SHORT).show();
}
}
});
builder.show();
}
});
}
private void updateFirebaseBestellung(ArrayList<String> arrayList, final DatabaseReference rootRef) {
bestellungen = String.join("/", arrayList);
rootRef.child("natursteineBestellungen").setValue(bestellungen);
}
В основном я хочу показать заказы пользователя в представлении переработчика, и это работает, но если пользователь удаляетпорядок, в представлении рециркулятора каждый заказ добавляется к старым, потому что данные изменяются в методе "updateFirebaseBestellung" и все повторяется ... Но я не знаю, как я это изменить, потому что, если я пытаюсь получить полученные данныепосле ValueEventListener он не получил никаких данных.Есть ли возможность остановить ValueEventListener в методе onDataChange?Я надеюсь, что вы могли понять мой английский