有没有可能在android原生创建一个用户配置文件页面而不使用任何其他SQL数据库,因为我不擅长JSON。
我想创建两个活动,一个将显示一个个人资料页面登录的用户( firebase身份验证)和其他用户的第二个布局将是编辑个人资料和能力,添加个人资料图片,全名,年龄和地址(我使用firebase电话身份验证,所以不需要使用电子邮件地址或密码)。
我尝试获取用户id并将其与其他属性一起存储到firestore的新集合中,但它对我不起作用。
发布于 2018-09-07 16:37:24
您可以尝试的是,您可以设置Firebase实时数据库并将值存储在其中,例如:用户名、imageURL、年龄和地址。
在您获得所有这些内容的输入之后(我猜您可以自己完成这项工作)。您可以使用以下代码将详细信息存储在users数据库的Firebase子级中:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userRef = rootRef.child("users");
DatabaseRefrence detailRef = ref.child(userName);
detailRef.child("age").setValue(age);
detailRef.child("imageURL").setValue(imageURL);
detailRef.child("address").setValue(address);要在第二个活动中访问和显示上面的数据,您必须使用event-listeners,如下所示:
// for example you have to read and show the address of the user from database
userRef.child(Current_userName).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String address = dataSnapshot.child("address").getValue(String.class);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});您可以这样做,以读取所有数据并在您的配置文件活动中显示它们。对于您希望他们编辑此数据的活动,您可以获取他们的输入并使用Maps更新数据库中的所有值,如下所示:
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String identifier = userName;
Map<String,Object> values = new HashMap<>();
values.put("address", address);
values.put("age",age);
values.put("imageURL",newImageURL);
userRef.child(identifier).updateChildren(values);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});这也将触发您的profile类中的侦听器,并相应地更新它们。
https://stackoverflow.com/questions/52218192
复制相似问题