因此,使用GeoFire,我能够将所有返回的密钥放入List。
ArrayList<String> arrayList = new ArrayList();
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(37, -133), 1.6);
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(final String key, GeoLocation location) {
arrayList.add(key);
...
我想我应该像这样添加听众。如何获取BizName来填充listView?我很棒我有钥匙,但我想要与这些钥匙相关的价值。
mRootRef.child("Businesses").child(key).addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Data data = dataSnapshot.getValue(Data.class);
data.getBizName();
}
答案 0 :(得分:0)
您确实需要为要显示的每个键加载其他信息。对于每个密钥,最多需要addListenerForSingleValueEvent
或addValueListener
。请注意,这并不像许多开发人员认为的那样昂贵,因为请求可以通过Firebase对服务器保持打开的单个连接进行流水线操作。见Speed up fetching posts for my social network app by using query instead of observing a single event repeatedly
加载您自己的数据也意味着您需要在加载信息和视图之间定义自己的适配器。请注意,密钥可能会移入和移出查询范围,因此理想情况下您应该处理onKeyEntered
和onKeyExited
。