Android, get value from firebase database

允我心安 提交于 2020-01-03 05:53:07

问题


I need to add markers from all users on my map. I'm saving all coordinates in my firebase

My database looks like:

So, when I want to get values: lat, lng from database(I do it in onMapReady method):

int allUsers = 100;
    while(allUsers >= 0) {
        double latAll = Double.parseDouble(users.child("lat").toString());
        double lngAll = Double.parseDouble(users.child("lng").toString());
        mMap.addMarker(new MarkerOptions().position(new LatLng(latAll, lngAll)));
    }

I get an error

Here i'm saving values ito my database:

GPSTracker gpstracker = new GPSTracker(mContext, SearchActivity.this);
                double locationLng = gpstracker.getLongitude();
                double locationLat = gpstracker.getLatitude();

                databaseReference.child("lng").setValue(locationLng);
                databaseReference.child("lat").setValue(locationLat);

here is my error:

FATAL EXCEPTION: main Process: kz.mul.livemeet_finalversion, PID: 24598 java.lang.NumberFormatException: For input string: "https://livemeetfinalversion.firebaseio.com/ekeLu1W_1RU%3AAPA91bFt2knzJYknyWLpuFb1Wm1nxl0TkM-bWdkNrjaoPUmv5JP_hm6b64Hx3m3X805A3QR8paMAOABJN6DZcb99z_EfwGwadN1dUN6ngtqTbGwxD6iMLlP7IW6RvEzg9UTW7HQKHyT0/lat" at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1306) at java.lang.Double.parseDouble(Double.java:547) at kz.mul.livemeet_finalversion.MapsActivity.onMapReady(MapsActivity.java:118) at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source) at com.google.android.gms.maps.internal.zzt$zza.onTransact(Unknown Source) at android.os.Binder.transact(Binder.java:499) at com.google.android.gms.maps.internal.bw.a(:com.google.android.gms.DynamiteModulesB:82) at com.google.maps.api.android.lib6.impl.bf.run(:com.google.android.gms.DynamiteModulesB:1805) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)


回答1:


Step 1) Make a PoJo.class which contains all the keys that are in database in you case like age,lat,lng etc.

Step 2) Now call this method for getting all the data.like below

    public void getAllUsersFromFirebase() { 
    DatabaseReference UserRef = FirebaseDatabase.getInstance().getReference().child("Parent_child");
    UserRef.keepSynced(true);
    UserRef.addValueEventListener(new ValueEventListener() {
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) {
            Iterator<DataSnapshot> dataSnapshots = dataSnapshot.getChildren().iterator();
            List<PoJo> fcmUsers = new ArrayList<>();
            while (dataSnapshots.hasNext()) {
                DataSnapshot dataSnapshotChild = dataSnapshots.next();
                PoJo fcmUser = dataSnapshotChild.getValue(PoJo.class);
                fcmUsers.add(fcmUser);

            } 

            // Check your arraylist size and pass to list view like 
            if(fcmUsers.size()>0)
            { 
                fcmUsers arraylist pass to your Map activity.

            }else 
            { 
                // Display dialog for there is no user available. 
            } 

        } 

        @Override 
        public void onCancelled(DatabaseError databaseError) {
                // for handling database error           
        } 
    }); 
} 


来源:https://stackoverflow.com/questions/44427213/android-get-value-from-firebase-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!