Android,从 firebase 数据库中获取价值
Posted
技术标签:
【中文标题】Android,从 firebase 数据库中获取价值【英文标题】:Android, get value from firebase database 【发布时间】:2017-11-09 15:59:54 【问题描述】:我需要在我的地图上添加所有用户的标记。我将所有坐标保存在我的火力基地中
我的数据库看起来像:
所以,当我想从数据库中获取值时:lat、lng(我在 onMapReady 方法中进行):
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)));
我收到一个错误
在这里我将值保存到我的数据库中:
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);
这是我的错误:
致命异常:主要 进程:kz.mul.livemeet_finalversion,PID:24598 java.lang.NumberFormatException:对于输入字符串:“https://livemeetfinalversion.firebaseio.com/ekeLu1W_1RU%3AAPA91bFt2knzJYknyWLpuFb1Wm1nxl0TkM-bWdkNrjaoPUmv5JP_hm6b64Hx3m3X805A3QR8paMAOABJN6DZcb99z_EfwGwadN1dUN6ngtqTbGwxD6iMLlP7IW6RvEzg9UTW7HQKHyT0/lat” 在 java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1306) 在 java.lang.Double.parseDouble(Double.java:547) 在 kz.mul.livemeet_finalversion.MapsActivity.onMapReady(MapsActivity.java:118) 在 com.google.android.gms.maps.SupportMapFragment$zza$1.zza(未知来源) 在 com.google.android.gms.maps.internal.zzt$zza.onTransact(未知来源) 在 android.os.Binder.transact(Binder.java:499) 在 com.google.android.gms.maps.internal.bw.a(:com.google.android.gms.DynamiteModulesB:82) 在 com.google.maps.api.android.lib6.impl.bf.run(:com.google.android.gms.DynamiteModulesB:1805) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6119) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
【问题讨论】:
你的父子名字是什么? 请向我们展示您的错误日志.. 已解决:***.com/questions/39552348/… 【参考方案1】:第 1 步)创建一个 PoJo.class,其中包含数据库中的所有键,例如年龄、纬度、lng 等。
步骤 2) 现在调用这个方法来获取所有数据。如下所示
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
);
【讨论】:
我不清楚你在哪里写通行证到你的地图活动以上是关于Android,从 firebase 数据库中获取价值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Studio 中使用 Kotlin 从 Firebase 中的数据库中获取特定值?
如何从 Firebase android kotlin 获取所有具有特定价值的孩子?
如何使用 HashMap 从 Android 的 Firebase 中的子节点获取数据?