很长一段时间一直在寻找我做错的事情,希望能在这里找到一些帮助。我正在尝试从Firebase填充文本视图。
private TextView txtDetails;
private DatabaseReference mFirebaseDatabase;
private FirebaseDatabase mFirebaseInstance;
private String userId;
private EditText inputLastName;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gb_personal_profile);
txtDetails = (TextView) findViewById(R.id.txt_profile_name);
mFirebaseDatabase =
FirebaseDatabase.getInstance().getReference("users");
mFirebaseDatabase.child(userId).addValueEventListener(new
ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
gbCreationUNameDB user =
dataSnapshot.getValue(gbCreationUNameDB.class);
txtDetails.setText(user.first_name);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
这是用户
import com.google.firebase.database.IgnoreExtraProperties;
@IgnoreExtraProperties
public class gbCreationUNameDB {
public String first_name;
public String last_name;
public gbCreationUNameDB() {
}
public gbCreationUNameDB(String first_name, String last_name) {
this.first_name = first_name;
this.last_name = last_name;
}
public String getfirst_name() {
return first_name;
}
}
非常感谢。已经检查了所有资源,无法弄清楚
答案 0 :(得分:0)
当您从dataSnapshot对象获取def float_unicode(arg_str):
return float(arg_str.decode("utf8").replace(u"\u2212", "-"))
的对象时,您正在使用以下代码行:
gbCreationUNameDB class
这意味着您正试图直接获取txtDetails.setText(user.first_name);
字段的值,但这种方法是错误的。要获得该值,您需要使用这样的公共getter:
first_name
其次,在txtDetails.setText(user.getfirst_name());
中,只有一个元素可以为null,这是DatabaseReference
。正如我在您的代码中看到的那样,您无法从任何地方获取此元素。因此,要获取用户uid,请使用以下代码:
userId
希望它有所帮助。