Android Firebase实时数据库映射到具有多个子类的类
Firebase实时数据库 上面的图片是我想从数据库中检索的数据,并将其映射到我的android studio中的类。但是,会出现一条警告: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
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) {
}
});
}