Asmahan
Asmahan

Reputation: 139

Update child value in firebase

My Firebase structure:

 "Requests" : {
"-KiyT2fiL8dE3jh7ccWT" : {
  "4pGOtqaTskarMnvz058UBpYbW1y2" : {
    "address" : "Street 12",
    "phone" : "05****699",
    "status" : "status",
    "subject" : "subjectText",
    "teacherName" : "nameText",
    "time_date" : "30 Apr 2017 1:46:43 p.m.",
    "uid_user" : "4pGOtqaTskarMnvz058UBpYbW1y2"
  }

I'm trying to update a value of child " status", How to get to "status" in rootRef? This my code

Acceptable.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    Unacceptable.setEnabled(false);
                    Toast.makeText(context, " this Request has been Acceptable " , Toast.LENGTH_LONG).show();
                    rootRef = FirebaseDatabase.getInstance().getReference("Requests");

                     rootRef.child("Requests").child("uid").child("uid_user").orderByChild("status").addValueEventListener(new ValueEventListener() {
                         @Override
                         public void onDataChange(DataSnapshot dataSnapshot) {

                             final String  status = dataSnapshot.getValue(String.class);
                             System.out.println(status);
                             rootRef.child("status").setValue("Your Request has been Acceptable");


                         }

                         @Override
                         public void onCancelled(DatabaseError databaseError) {

                         }
                     });
                    Toast.makeText(context, " this Request has been Acceptable " , Toast.LENGTH_LONG).show();
                    Acceptable.setEnabled(false);


                                      }
            });

Upvotes: 0

Views: 7797

Answers (2)

Frank van Puffelen
Frank van Puffelen

Reputation: 599956

Why do you have a push ID around every user? That makes it necessary to query, and I doubt it is needed. A much simpler solution is to store users under their UID:

Users
  4pG0...y2
    address: "..."
    phone: "..."
    status: "status"

With this structure you can modify the status of a user with:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

rootRef.child("Requests").child(uid).child("status").setValue("new status");

Upvotes: 5

pantos27
pantos27

Reputation: 629

Not exactly sure how you db is structured but this might help

public void onClick(View v) {
                    Unacceptable.setEnabled(false);
                    Toast.makeText(context, " this Request has been Acceptable " , Toast.LENGTH_LONG).show();
                    FirebaseDatabase.getInstance().getReference("Requests").child("status").setValue("Your Request has been Acceptable");

                    Toast.makeText(context, " this Request has been Acceptable " , Toast.LENGTH_LONG).show();
                    Acceptable.setEnabled(false);

}

Upvotes: 0

Related Questions