Java 如何更新Firebase数据库
在我的Firebase聊天应用程序中,我在用户使用谷歌、电子邮件和密码或facebook登录后,使用setValue在用户注册时插入用户名和个人资料照片的数据。然后在我的个人资料活动中,我使用valueEventListener显示用户照片和用户名,如果我在我的个人资料活动中再次使用setValue方法,我可以更新。但问题是,它只更新当前数据,所有用户发布内容或评论的地方,用户名和个人资料照片保持不变。当用户在配置文件活动中更新其信息时,是否有方法更新我数据库中的所有内容 下面是我如何插入数据的Java 如何更新Firebase数据库,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,在我的Firebase聊天应用程序中,我在用户使用谷歌、电子邮件和密码或facebook登录后,使用setValue在用户注册时插入用户名和个人资料照片的数据。然后在我的个人资料活动中,我使用valueEventListener显示用户照片和用户名,如果我在我的个人资料活动中再次使用setValue方法,我可以更新。但问题是,它只更新当前数据,所有用户发布内容或评论的地方,用户名和个人资料照片保持不变。当用户在配置文件活动中更新其信息时,是否有方法更新我数据库中的所有内容 下面是我如何插入数据的
如何在保存此数据的所有位置进行更新?问题尚不清楚。请再详细解释一下。发布您的数据库结构 要在任何地方获得相同的数据,只需创建一个子对象,例如
user
-userid
-name:username
-photo:url
-timestamp:12:30
使用用户名、照片、时间戳等,然后在需要用户详细信息的任何位置获取这些详细信息。同时在您的配置文件活动中更新此子项。
因此,基本上你所做的就是从同一个孩子那里获取和更新所有的值。谢谢,当我读到你的答案时,我发现它打开了我的思路,是的,我的错误是只在一个地方调用它。我只是在所有存在和设置新值的地方再次调用我的数据。
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);
user
-userid
-name:username
-photo:url
-timestamp:12:30