получить значения из fireBase - PullRequest
       1

получить значения из fireBase

0 голосов
/ 12 декабря 2018

Я использую Firebase в своем Android Studio проекте, и я хотел бы знать, как я могу получить все данные Firebase (рисунок ниже).

my database

Я создал 4 класса

Класс города, который содержит 3 строки и объект AllPlaces:

public class City {
private String name;
private String image;
private String hebrew;
private AllPlaces allPlaces;

public City(String name, String image, String hebrew, AllPlaces allPlaces) {
    this.name = name;
    this.image = image;
    this.hebrew = hebrew;
    this.allPlaces = allPlaces;
    Log.d("niv","!!!");
}

public City() {}

public String getHebrew() {
    return hebrew;
}

public void setHebrew(String hebrew) {
    this.hebrew = hebrew;
}

public String getName() {
    return name;
}

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

public String getImage() {
    return image;
}

public void setImage(String picUrl) {
    this.image = picUrl;
}

public AllPlaces getAllPlaces() {
    return allPlaces;
}

public void setAllPlaces(AllPlaces allPlaces) {
    this.allPlaces = allPlaces;
}

Класс AllPlaces, который содержит HashMapКатегории мест:

public class AllPlaces {

private HashMap<String,PlaceCategory> placeHashMap=new HashMap<>();

public AllPlaces() {
}

public AllPlaces(HashMap<String, PlaceCategory> placeHashMap) {
    this.placeHashMap = placeHashMap;
}

public HashMap<String, PlaceCategory> getPlaceHashMap() {
    return placeHashMap;
}

public void setPlaceHashMap(HashMap<String, PlaceCategory> placeHashMap) {
    this.placeHashMap = placeHashMap;
}

Класс категории мест, содержащий две строки и hashmap мест:

public class PlaceCategory {
private String name;
private String Hname;
private HashMap<String,Place> places=new HashMap<>();

public PlaceCategory(String name, String hname, HashMap<String, Place> places) {
    this.name = name;
    Hname = hname;
    this.places = places;
}

public PlaceCategory() {
}

public String getName() {
    return name;
}

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

public String getHname() {
    return Hname;
}

public void setHname(String hname) {
    Hname = hname;
}

public HashMap<String, Place> getPlaces() {
    return places;
}

public void setPlaces(HashMap<String, Place> places) {
    this.places = places;
}

Класс мест, содержащий две строки:

public class Place {

private String name;
private String Hname;


public Place() {
}

public Place(String name) {
    this.name = name;
}

public String getName() {
    return name;
}

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

public Place(String name, String hname) {
    this.name = name;
    Hname = hname;
}

public String getHname() {
    return Hname;
}

public void setHname(String hname) {
    Hname = hname;
}

Послечто я попытался получить данные с помощью:

 List<City> cities=new ArrayList<>();
 FirebaseDatabase database = FirebaseDatabase.getInstance();
 DatabaseReference citiesRef= database.getReference("cities");

  citiesRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            if (dataSnapshot.exists()){

                cities.clear();

                for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                    City city = snapshot.getValue(City.class);
                    cities.add(city);
                }
             }
           }

Ошибка:

FATAL EXCEPTION: main
                                               Process: com.example.win10.triplanner, PID: 11822
                                               com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.win10.triplanner.PlaceCategory
                                                   at com.google.android.gms.internal.zg.zzb(Unknown Source)
                                                   at com.google.android.gms.internal.zg.zza(Unknown Source)
                                                   at com.google.android.gms.internal.zg.zza(Unknown Source)
                                                   at com.google.android.gms.internal.zg.zzb(Unknown Source)
                                                   at com.google.android.gms.internal.zh.zze(Unknown Source)
                                                   at com.google.android.gms.internal.zg.zzb(Unknown Source)
                                                   at com.google.android.gms.internal.zg.zza(Unknown Source)
                                                   at com.google.android.gms.internal.zg.zzb(Unknown Source)
                                                   at com.google.android.gms.internal.zh.zze(Unknown Source)
                                                   at com.google.android.gms.internal.zg.zzb(Unknown Source)
                                                   at com.google.android.gms.internal.zg.zza(Unknown Source)
                                                   at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                                                   at com.example.win10.triplanner.MainActivity$2.onDataChange(MainActivity.java:162)
                                                   at com.google.android.gms.internal.to.zza(Unknown Source)
                                                   at com.google.android.gms.internal.vj.zzHX(Unknown Source)
                                                   at com.google.android.gms.internal.vp.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:145)
                                                   at android.app.ActivityThread.main(ActivityThread.java:5832)
                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                   at java.lang.reflect.Method.invoke(Method.java:372)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

ВАЖНО Перед тем, как создать этот класс,У меня был только городской класс, который содержал только строки, и я получил 3 строки из базы, и она отлично работала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...