Android Firebase实时数据库映射到具有多个子类的类

Android Firebase实时数据库映射到具有多个子类的类,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,Firebase实时数据库 上面的图片是我想从数据库中检索的数据,并将其映射到我的android studio中的类。但是,会出现一条警告: W/ClassMapper: No setter/field for indian found on class com.example.kangj.dabao.Stalls 我的课程如下: CoffeeShop.java public class CoffeeShop { private LatLng latlng; private

Firebase实时数据库

上面的图片是我想从数据库中检索的数据,并将其映射到我的android studio中的类。但是,会出现一条警告:

W/ClassMapper: No setter/field for indian found on class com.example.kangj.dabao.Stalls
我的课程如下:

CoffeeShop.java

public class CoffeeShop {
    private LatLng latlng;
    private String image;
    private double lat;
    private double lng;
    private String address;
    private String name;
    private int zipcode;
    private Map<String, Stalls> stalls;

    public CoffeeShop() {
    }

    public CoffeeShop(String i,double la,double lo,String a, String n, int z, Map<String, Stalls> s)
    {
        image = i;
        lat = la;
        lng = lo;
        address = a;
        name = n;
        zipcode = z;
        stalls = s;
        latlng = new LatLng(lat,lng);
    }

    public LatLng getLatLng() {


        latlng = new LatLng(lat,lng);
        return latlng;
    }

    public void setLatLng(LatLng latlng) {
        this.latlng = latlng;
    }

    public String getImage()
    {
        return image;
    }
    public void setImage(String i)
    {
        image = i;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getZipcode() {
        return zipcode;
    }

    public void setZipcode(int zipcode) {
        this.zipcode = zipcode;
    }

    public double getLat() {
        return lat;
    }

    public void setLat(double lat) {
        this.lat = lat;
    }

    public double getLng() {
        return lng;
    }

    public void setLng(double lng) {
        this.lng = lng;
    }

    public Map<String, Stalls> getStalls() {
        return stalls;
    }

    public void setStalls(Map<String, Stalls> stalls) {
        this.stalls = stalls;
    }
}
更新

设法修复了无设置器/字段,现在又出现了另一个错误

com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.kangj.dabao.Food
                                                                                   at com.google.android.gms.internal.zzbtg.zze(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg$zza.zze(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg$zza.zzaH(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zze(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg$zza.zze(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg$zza.zzaH(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zze(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                                                                                   at com.example.kangj.dabao.LocationActivity$1.onDataChange(LocationActivity.java:126)
                                                                                   at com.google.firebase.database.Query$1.onDataChange(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbpx.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbqx.zzZS(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbra$1.run(Unknown Source)
                                                                                   at android.os.Handler.handleCallback(Handler.java:739)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                   at android.os.Looper.loop(Looper.java:148)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
这就是我从firebase获取数据的方式

ArrayList<CoffeeShop> coffeeShopsLists;

coffeeShopsLists = new ArrayList<CoffeeShop>();
        mDatabase = FirebaseDatabase.getInstance().getReference();
        mDatabase.child("restaurant").addListenerForSingleValueEvent(
                new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        // Get user value
                        for(DataSnapshot data : dataSnapshot.getChildren())
                        {
                            coffeeShopsLists.add(data.getValue(CoffeeShop.class));

                        }
                        buildGoogleApiClient();

                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
    }
ArrayList咖啡店;
CoffeeShopsList=新ArrayList();
mDatabase=FirebaseDatabase.getInstance().getReference();
mDatabase.child(“餐厅”).addListenerForSingleValueEvent(
新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
//获取用户值
对于(DataSnapshot数据:DataSnapshot.getChildren())
{
coffeeShopsLists.add(data.getValue(CoffeeShop.class));
}
buildGoogleAppClient();
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}

Stalls.java的用途是什么?那不是一门很特别的课吗?另外,请提供您的Android代码,说明如何从Firebase获取值。尝试更好地反规范化您的数据库。在另一个节点中存储具有餐厅id的摊位可能是因为每个摊位都有自己的食物,并且有很多食物,所以我尝试将它们存储在地图中,以便检索它们@tingyik90@uguboz那是个好主意,我会试试的!同意uguboz的观点,即您应该对数据进行非规范化。我问这个问题是因为随着更多类型的失速出现,您似乎会在将来不断更新您的
失速
类?这不是处理数据的有效方法。相反,您的<代码> STOR> 类应该考虑参数,以帮助您区分每种类型的档位,如<代码> String FooType 。
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.kangj.dabao.Food
                                                                                   at com.google.android.gms.internal.zzbtg.zze(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg$zza.zze(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg$zza.zzaH(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zze(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg$zza.zze(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg$zza.zzaH(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zze(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zzb(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbtg.zza(Unknown Source)
                                                                                   at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                                                                                   at com.example.kangj.dabao.LocationActivity$1.onDataChange(LocationActivity.java:126)
                                                                                   at com.google.firebase.database.Query$1.onDataChange(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbpx.zza(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbqx.zzZS(Unknown Source)
                                                                                   at com.google.android.gms.internal.zzbra$1.run(Unknown Source)
                                                                                   at android.os.Handler.handleCallback(Handler.java:739)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                   at android.os.Looper.loop(Looper.java:148)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
ArrayList<CoffeeShop> coffeeShopsLists;

coffeeShopsLists = new ArrayList<CoffeeShop>();
        mDatabase = FirebaseDatabase.getInstance().getReference();
        mDatabase.child("restaurant").addListenerForSingleValueEvent(
                new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        // Get user value
                        for(DataSnapshot data : dataSnapshot.getChildren())
                        {
                            coffeeShopsLists.add(data.getValue(CoffeeShop.class));

                        }
                        buildGoogleApiClient();

                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
    }