无法将java.lang.String类型的对象转换为com.mycare.OtherClass类型

对于类似问题,我已经查看了其他一些答案,但是不明白为什么我的系统无法正常工作.
在我的Firebase数据库中,有一个包含其下不同信息的用户列表.我想从当前userId到recyclerview检索信息.

我的代码如下:

  DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference databaseStatus = rootRef.child("other");
    String uid = firebaseAuth.getInstance().getCurrentUser().getUid();
    databaseStatus.child(uid).addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot snapshot) {

            for (DataSnapshot ds : snapshot.getChildren()) {

                for (DataSnapshot dSnapshot : ds.getChildren()) {

                    OtherClass otherClass = dSnapshot.getValue(OtherClass.class);
                    Log.d("Show", otherClass.getOname() == null ? "" : otherClass.getOname());
                    list.add(otherClass);
                }

                adapter = new ShowOtherDetails.OtherAdapter(ShowOtherDetails.this, list);
                recyclerView.setAdapter(adapter);
                adapter.notifyDataSetChanged();
                progressDialog.dismiss();
            }
        }

这给了我这个错误:

  com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.mycare.OtherClass

firebase数据结构如下所示:

enter image description here

拜托,有人可以帮我吗?

最佳答案
尝试这个:

保存时,请执行以下操作:

    String key = databaseStatus.child(uid).push().getKey()

这样您就可以获取密钥.

然后在第一种方法中在此处检索时将密钥作为子项添加

databaseStatus.child(uid).child(key).addValueEventListener(new ValueEventListener() {

   @Override
    public void onDataChange(DataSnapshot snapshot) {



                OtherClass otherClass = snapshot.getValue(OtherClass.class);
                Log.d("Show", otherClass.getOname() == null ? "" : otherClass.getOname());
                list.add(otherClass);
            }

删除(DataSnapshot ds:snapshot.getChildren())的for循环

或这样做:

    databaseStatus.child(uid).addValueEventListener(new ValueEventListener() {

    @Override
    public void onDataChange(DataSnapshot snapshot) {

        for (DataSnapshot ds : snapshot.getChildren()) {

            for (DataSnapshot dSnapshot : ds.getChildren()) {

                String date=dataSnapshot.child("date").getValue().toString();
  String detail=dataSnapshot.child("detail").getValue().toString();
  String email=dataSnapshot.child("email").getValue().toString();
  String id=dataSnapshot.child("id").getValue().toString()
   //and so on
            }

转载注明原文:无法将java.lang.String类型的对象转换为com.mycare.OtherClass类型 - 代码日志