无法将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数据结构如下所示:

 

拜托,有人可以帮我吗?

最佳答案

尝试这个:

 

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

 

    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
            }

Inm小程序商店

 

Inm小程序商店收录了最新,最热门的微信小程序和微信小游戏,是国内内容最丰富的集小程序游戏、小程序分发、小程序推广为一体的综合性小程序门户网站之一。


Vultr中文网

 

最低 $2.5/月 的VPS, 稳定, 可靠

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值