java - 无法将 java.lang.String 类型的值转换为 double

标签 java android firebase

大家好,我是 Android 开发新手。检查我的编码,我会将 firebase 的输出打印到卡片 View 中,其中显示所有数据,但是当我创建具有不同类型值(例如来自 firebase 的字符串和 double 值)的类模型时,它无法转换。为什么会出现这样的问题呢?我也想要解决方案。

我尝试过使用Datasnapshotfirebase获取数据并将字符串值转换为 double 值。

火力地堡:

This is what my <code>firebase</code> looks like.

检索值的函数

        {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot)
            {
                lrpModels =new ArrayList<>();
                for (DataSnapshot postSnapshot : dataSnapshot.getChildren())
                {
                    //the problem at this line
                    LRP_model lrpC = postSnapshot.getValue(LRP_model.class);
                    lrpModels.add(lrpC);
                }
                //creating adapter
                mLRPAdapter = new LRPAdapter(getApplication(),lrpModels, "LRP");
                //add the adapter to the recyclerview
                recyclerView.setAdapter(mLRPAdapter);
            }

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

            }
        });

模型类


    private String uid;
    private String lrpName;
    private String lrpDesc;
    private String lrpStartpoint;
    double lrpSLat;
    double lrpSLng;
    private String lrpEndpoint;
    double lrpELat;
    double lrpELng;
    private String lrpDistance;
    private String lrpSubRegion;
    private String lrpRegion;
    private String userId;
    private ArrayList<Route_model> route_models;

    public LRP_model(){}
    public LRP_model(String uid, String lrpName, String lrpDesc, String lrpStartpoint, double lrpSLat, double lrpSLng, String lrpEndpoint, double lrpELat, double lrpELng, String lrpDistance, String lrpSubRegion, String lrpRegion, String userId, ArrayList<Route_model>route_models) {
        this.uid = uid;
        this.lrpName = lrpName;
        this.lrpDesc = lrpDesc;
        this.lrpStartpoint = lrpStartpoint;
        this.lrpSLat = lrpSLat;
        this.lrpSLng = lrpSLng;
        this.lrpEndpoint = lrpEndpoint;
        this.lrpELat = lrpELat;
        this.lrpELng = lrpELng;
        this.lrpDistance = lrpDistance;
        this.lrpSubRegion = lrpSubRegion;
        this.lrpRegion = lrpRegion;
        this.userId = userId;
        this.route_models = route_models;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public void setLrpName(String lrpName) {
        this.lrpName = lrpName;
    }

    public void setLrpDesc(String lrpDesc) {
        this.lrpDesc = lrpDesc;
    }

    public void setLrpStartpoint(String lrpStartpoint) {
        this.lrpStartpoint = lrpStartpoint;
    }

    public void setLrpSLat(double lrpSLat) {
        this.lrpSLat = lrpSLat;
    }

    public void setLrpSLng(double lrpSLng) {
        this.lrpSLng = lrpSLng;
    }

    public void setLrpEndpoint(String lrpEndpoint) {
        this.lrpEndpoint = lrpEndpoint;
    }

    public void setLrpELat(double lrpELat) {
        this.lrpELat = lrpELat;
    }

    public void setLrpELng(double lrpELng) {
        this.lrpELng = lrpELng;
    }

    public void setLrpDistance(String lrpDistance) {
        this.lrpDistance = lrpDistance;
    }

    public void setLrpSubRegion(String lrpSubRegion) {
        this.lrpSubRegion = lrpSubRegion;
    }

    public void setLrpRegion(String lrpRegion) {
        this.lrpRegion = lrpRegion;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUid() {
        return uid;
    }

    public String getLrpName() {
        return lrpName;
    }

    public String getLrpDesc() {
        return lrpDesc;
    }

    public String getLrpStartpoint() {
        return lrpStartpoint;
    }

    public double getLrpSLat() {
        return lrpSLat;
    }

    public double getLrpSLng() {
        return lrpSLng;
    }

    public String getLrpEndpoint() {
        return lrpEndpoint;
    }

    public double getLrpELat() {
        return lrpELat;
    }

    public double getLrpELng() {
        return lrpELng;
    }

    public String getLrpDistance() {
        return lrpDistance;
    }

    public String getLrpSubRegion() {
        return lrpSubRegion;
    }

    public String getLrpRegion() {
        return lrpRegion;
    }

    public String getUserId() {
        return userId;
    }

    public ArrayList<Route_model> getRoute_models(){
        return  route_models;
    }

    public void setRoute_models(ArrayList<Route_model> route_models){
        this.route_models = route_models;
    }

}

我希望该值以 double 形式检索,并且也可用于将纬度和经度放入 map 中,但显示的错误无法转换字符串值。

最佳答案

检查后Your Firebase look
发现您采用了 double 作为数据类型。将其更改为字符串

double lrpSLat;  change to String lrpSLat;
double lrpSLng;  change to String lrpSLng;
double lrpELat;  change to String lrpELat;
double lrpELng;  change to String lrpELng;

更新后的 LRP_model 将为

package com.prime_components; public class LRP_model implements Serializable {
    private String uid;
    private String lrpName;
    private String lrpDesc;
    private String lrpStartpoint;
    String lrpSLat;
    String lrpSLng;
    private String lrpEndpoint;
    String lrpELat;
    String lrpELng;
    private String lrpDistance;
    private String lrpSubRegion;
    private String lrpRegion;
    private String userId;
    private ArrayList<Route_model> route_models;

    public LRP_model(){}
    public LRP_model(String uid, String lrpName, String lrpDesc, String lrpStartpoint, String lrpSLat, String lrpSLng, String lrpEndpoint, String lrpELat, String lrpELng, String lrpDistance, String lrpSubRegion, String lrpRegion, String userId, ArrayList<Route_model>route_models) {
        this.uid = uid;
        this.lrpName = lrpName;
        this.lrpDesc = lrpDesc;
        this.lrpStartpoint = lrpStartpoint;
        this.lrpSLat = lrpSLat;
        this.lrpSLng = lrpSLng;
        this.lrpEndpoint = lrpEndpoint;
        this.lrpELat = lrpELat;
        this.lrpELng = lrpELng;
        this.lrpDistance = lrpDistance;
        this.lrpSubRegion = lrpSubRegion;
        this.lrpRegion = lrpRegion;
        this.userId = userId;
        this.route_models = route_models;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public void setLrpName(String lrpName) {
        this.lrpName = lrpName;
    }

    public void setLrpDesc(String lrpDesc) {
        this.lrpDesc = lrpDesc;
    }

    public void setLrpStartpoint(String lrpStartpoint) {
        this.lrpStartpoint = lrpStartpoint;
    }

    public void setLrpSLat(String lrpSLat) {
        this.lrpSLat = lrpSLat;
    }

    public void setLrpSLng(String lrpSLng) {
        this.lrpSLng = lrpSLng;
    }

    public void setLrpEndpoint(String lrpEndpoint) {
        this.lrpEndpoint = lrpEndpoint;
    }

    public void setLrpELat(String lrpELat) {
        this.lrpELat = lrpELat;
    }

    public void setLrpELng(String lrpELng) {
        this.lrpELng = lrpELng;
    }

    public void setLrpDistance(String lrpDistance) {
        this.lrpDistance = lrpDistance;
    }

    public void setLrpSubRegion(String lrpSubRegion) {
        this.lrpSubRegion = lrpSubRegion;
    }

    public void setLrpRegion(String lrpRegion) {
        this.lrpRegion = lrpRegion;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUid() {
        return uid;
    }

    public String getLrpName() {
        return lrpName;
    }

    public String getLrpDesc() {
        return lrpDesc;
    }

    public String getLrpStartpoint() {
        return lrpStartpoint;
    }

    public String getLrpSLat() {
        return lrpSLat;
    }

    public String getLrpSLng() {
        return lrpSLng;
    }

    public String getLrpEndpoint() {
        return lrpEndpoint;
    }

    public String getLrpELat() {
        return lrpELat;
    }

    public String getLrpELng() {
        return lrpELng;
    }

    public String getLrpDistance() {
        return lrpDistance;
    }

    public String getLrpSubRegion() {
        return lrpSubRegion;
    }

    public String getLrpRegion() {
        return lrpRegion;
    }

    public String getUserId() {
        return userId;
    }

    public ArrayList<Route_model> getRoute_models(){
        return  route_models;
    }

    public void setRoute_models(ArrayList<Route_model> route_models){
        this.route_models = route_models;
    }

}

关于java - 无法将 java.lang.String 类型的值转换为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56963400/

相关文章:

java - 临时谈话结束疑虑

java - 如何根据当前日期筛选记录?

java - 将 URI 转换为仅包含主机、端口和路径的字符串

java - 即使在更新模型成功后更新 RecyclerView 也失败

Android,由于错误 “Activity cannot be provided without an @Inject constructor ” 无法集成 Dagger2

javascript - 如何从 Cloud Firestore 数据库中获取特定字段数据?

java - 如何在呈现给浏览器之前获取 HTML 文本 - 使用 servlet

android - 如何在 Android list 文件中设置文本外观?

android - react 原生 firebase 与 expo 裸应用程序的集成

Android Firestore 查询获取包含搜索值的文档的 id