我有一个使用Firebase数据库的Android应用程序。
我想要什么 我有输入字段作为用户名。当用户输入他的用户名时,我想检查该用户是否存在。如果是,请允许他登录。
[你可以看到用户名:] [2]
我想获得此用户名。我尝试了一些代码,但它没有得到我想要的东西。
这是代码示例:
mUserRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child: dataSnapshot.getChildren())
{
UserData userData = child.getValue(UserData.class);
if(c_user_name == null)
{
c_user_name= " ";
}
online_user_id=c_user_name+userData.getmUser_name();
c_user_name=online_user_id.toString();
Log.v("E_VALUE","User_new:"+c_user_name);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我得到的是什么错误 无法将java.lang.String类型的对象转换为类型packagename.UserData
这是我的UserData类
public class UserData {
String mUser_name,mUser_email;
public UserData() {
}
public UserData(String mUser_name, String mUser_email) {
this.mUser_name = mUser_name;
this.mUser_email = mUser_email;
}
public String getmUser_name() {
return mUser_name;
}
public String getmUser_email() {
return mUser_email;
}
}
答案 0 :(得分:0)
这可以通过使用 orderByChild 来实现,并使用 addListenerForSingleValueEvent ,因为您只想阅读一次。
检查以下代码:
mUserRef.orderByChild("User_Name").equalTo("usernameInputFieldText").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists)
{
/// username exsits
}
else
{
/// user name doesn't exists
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});