2017-04-08 76 views
0

在我的Firebase聊天应用程序中,当用户使用谷歌,电子邮件和密码或Facebook登录后,用户注册时使用setValue插入用户名和个人资料照片的数据。然后,在我的个人资料活动中,我使用valueEventListener来显示用户照片和用户名,如果我在配置文件活动中再次使用setValue方法,则可以更新。但问题是它只更新当前数据,用户发布内容或评论的所有地方,用户名和个人资料照片保持不变。有什么方法可以在用户在配置文件活动中更新其信息时更新数据库中的所有内容?如何更新Firebase数据库

下面是我插入数据

StorageReference filepath = mStorageImage.child(mImageUri.getLastPathSegment()); 
filepath.putFile(mImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
    @Override 
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 

     String downloadUri = taskSnapshot.getDownloadUrl().toString(); 

     mDatabaseUsers.child(user_id).child("name").setValue(name); 
     mDatabaseUsers.child(user_id).child("timestampjoined").setValue(timestamp); 
     mDatabaseUsers.child(user_id).child("image").setValue(downloadUri); 

     mProgress.dismiss(); 

然后在我的个人资料活动我得到的数据

mDatabaseUser.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String timestampjoined = (String) dataSnapshot.child("timestampjoined").getValue(); 
     String profilename = (String) dataSnapshot.child("name").getValue(); 
     String profilepicture = (String) dataSnapshot.child("image").getValue(); 


     Glide.with(DDiaryProfileActivity.this).load(profilepicture) 
       .fitCenter().diskCacheStrategy(DiskCacheStrategy.ALL).into(mProfilePicture); 

     ((CollapsingToolbarLayout) findViewById(R.id.toolbar_profile)).setCollapsedTitleTextAppearance(R.style.CollapsingToolBar);; 
     ((CollapsingToolbarLayout) findViewById(R.id.toolbar_profile)).setTitle(profilename); 


     mTimeJoined.setText("Date joined : " + timestampjoined); 
     mProfileName.setText(profilename); 

如何在所有地方更新,其中该数据被保存?

回答

1

问题不明确。请详细解释一下。发布您的数据库结构。

要获得相同的数据无处不在刚刚创建子说,例如

user 
-userid 
    -name:username 
    -photo:url 
    -timestamp:12:30 

与用户的姓名,照片,时间戳等,然后获取这些信息,无论你希望用户details.Also更新这个孩子在您的个人资料活动中 所以基本上你在做什么是获取和更新来自同一孩子的所有值。

+0

谢谢,当我读到你的答案时,我发现它出来了,它打开了我的想法,是的,我的错误只是在一个地方调用它。我只是在所有存在的地方再次打电话给我的数据,并设置了新的价值。 –

相关问题