大家好,我是 Android 开发新手。检查我的编码,我会将 firebase
的输出打印到卡片 View 中,其中显示所有数据,但是当我创建具有不同类型值(例如来自 firebase
的字符串和 double 值)的类模型时,它无法转换。为什么会出现这样的问题呢?我也想要解决方案。
我尝试过使用Datasnapshot
从firebase
获取数据并将字符串值转换为 double 值。
火力地堡:
检索值的函数
{
@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/