Reputation: 67
I have database like this
It is possible to first set text of name in Edittext which is in Listview and then change the name to corresponding position items and on button click each inserted value in Editfield is updated to the database to related field.
Upvotes: 0
Views: 810
Reputation: 26
1- Download:
FirebaseDatabase database=FirebaseDatabase.getInstance();
DatabaseReference reference=database.getReference();
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
try {
//parse data snapshot in another thread.
}catch (Exception e){
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
//=========================== 2- Parse: HashMap d = (HashMap) dataSnapshot.getValue(); HashMap users=((HashMap) d.get("users"));
3- Update ListView/EditText or use users(Hashmap)
4- Update:
String nameString= nameEditText.getText().toString();
FirebaseDatabase database = FirebaseDatabase.getInstance();
// getting database reference for the user that needs to be updated.
DatabaseReference databaseReference = database.getReference().child("users").child(userId);
Map<String, Object> taskMap = new HashMap<String, Object>();
taskMap.put("name", nameString);
databaseReference.updateChildren(taskMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.d("", "task is: " + task);
if(task.isSuccessful()){
Toast.makeText(getActivity(),"Commit is successfull", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getActivity(),"Commit is failed", Toast.LENGTH_LONG).show();
}
}
});
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Object value = dataSnapshot.getValue();
Log.d("", "Value is: " + value);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w(TAG, "Failed to save value.", error.toException());
}
});
Upvotes: 1