2017-04-08 79 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

謝謝,當我讀到你的答案時,我發現它出來了,它打開了我的想法,是的,我的錯誤只是在一個地方調用它。我只是在所有存在的地方再次打電話給我的數據,並設置了新的價值。 –

相關問題