【问题标题】:Unable to get list of cities from firebase无法从 Firebase 获取城市列表
【发布时间】:2019-12-11 00:54:52
【问题描述】:

我正在尝试从 Firebase 获取城市列表并在微调器中显示。但我在下面收到以下错误:

com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为 Models.FirebaseCityModel 类型

数据库结构:

下面是我的代码:

 dRef.child("Cities").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            List<FirebaseCityModel> cities = new ArrayList<>();

            for(DataSnapshot areaSnapshot:dataSnapshot.getChildren()){
                FirebaseCityModel areaName = areaSnapshot.getValue(FirebaseCityModel.class);
                cities.add(areaName);
            }
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,R.layout.spinner_city,
                    R.id.locaions,list);

            chooseLocation.setAdapter(adapter);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

            TastyToast.makeText(getApplicationContext(),"Unable to fetch locations",TastyToast.LENGTH_SHORT,TastyToast.ERROR).show();
        }
    });

请有人告诉我我做错了什么。任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 请将您的数据库结构添加为 JSON 文件或至少作为屏幕截图。
  • 您的问题在这里:areaSnapshot.child("city").getValue(FirebaseCityModel.class) 您需要将其转换为您的模型
  • @Alex 添加数据库结构截图。
  • 正是我所想的。只需在下面使用我的答案。

标签: java android firebase firebase-realtime-database


【解决方案1】:

代码中的问题很可能是额外的.child() 调用。所以要解决这个问题,请更改以下代码行:

FirebaseCityModel areaName = areaSnapshot.child("city").getValue(FirebaseCityModel.class);

FirebaseCityModel areaName = areaSnapshot.getValue(FirebaseCityModel.class);

【讨论】:

  • 当我使用您的解决方案记录输出时,我会得到类似 Models.FirebaseCityModel@f03007dModels.FirebaseCityModel@c1b7b72 的信息。
  • 没有看到你的代码,我帮不上什么忙。除此之外,在实施之前,您是否尝试过我上面的解决方案?
  • 我已经用你的代码更新了我的代码,请看我的帖子。
  • 看起来不错。现在,向我提供完整的错误消息及其发生的行。
  • 没有错误但在日志猫Models.FirebaseCityModel@c2d88faModels.FirebaseCityModel@a7baeab中显示类似的内容。
【解决方案2】:

onDataChange()里面把你的代码改成-

FirebaseCityModel areaName = areaSnapshot.getValue(FirebaseCityModel.class);

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2020-05-12
    相关资源
    最近更新 更多