实时从firebase检索数据

时间:2018-03-13 07:21:21

标签: android firebase firebase-realtime-database

我试图从我的firebase实时检索数据到我的应用程序。因此,每次我尝试更改firebase中的数据(如name,ratio和total_slot)时,它都应该在我的应用程序中实时显示。但是,在我的firebase结构中获取密钥有点困难。如果有人可以提供帮助。这意味着很多。

  

此处附有我的Firebase数据结构   Firebase Database Structure

我的模型类

public class LocationModel {
    Long lat,lng,ratio,total_slot;
    String name;
    String key;

    public LocationModel(){
    }

    public Long getLat(){return lat;}
    public void setLat(Long lat){this.lat=lat;}

    public Long getLng(){return lng;}
    public void setLng(Long lng){this.lng=lng;}

    public Long getRatio(){ return ratio;}
    public void setRatio(Long ratio){this.ratio = ratio;}

    public Long getTotal_slot(){ return total_slot;}
    public void setTotal_slot(Long total_slot){this.total_slot = total_slot;}

    public String getName() {
        return name;

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

    public String getKey() {
        return key;
    }
    public void setKey(String key) {
        this.key = key;
    }
}

我如何尝试检索我在firebase中更改的数据

//RETRIEVE
public ArrayList<LocationModel> retrieve()
{
    db.child("locs").addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            fetchData(dataSnapshot);
            LocationModel locationModel = dataSnapshot.getValue(LocationModel.class);

            locationModels.add(locationModel);

            String key = dataSnapshot.getKey();
            mKeys.add(key);
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
            for(DataSnapshot ds: dataSnapshot.getChildren()){
                LocationModel locationModel = dataSnapshot.getValue(LocationModel.class);
                String key = ds.getKey();
                int index=mKeys.indexOf(key);
                locationModels.set(index, locationModel);
            }
        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {
        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
    return locationModels;
}

但是,每当我尝试更改firebase上的数据时,它都会给我一个错误 也许是因为关键。如果有人可以提供帮助,请

0 个答案:

没有答案