首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Geofirestore文档结果加载到RecyclerView中

将Geofirestore文档结果加载到RecyclerView中
EN

Stack Overflow用户
提问于 2019-05-30 09:04:29
回答 1查看 278关注 0票数 0

我使用GeoFirestore来查找最近的位置,它成功了,但是我需要将我获得的文档加载到RecyclerView中,怎么可能做到这一点呢?

GeoFirestore方法

代码语言:javascript
复制
   private void getNearestEstate(){

    GeoQuery geoQuery = geoFirestore.queryAtLocation(new GeoPoint(latitude, longitude), 2);
    geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener() {
        @Override
        public void onDocumentEntered(DocumentSnapshot documentSnapshot, GeoPoint geoPoint) {

        }
}

负载入Rv

代码语言:javascript
复制
   private void dataFetch(Query query,int rvView){


          FirestoreRecyclerOptions<Property> options = new FirestoreRecyclerOptions.Builder<Property>()
            .setQuery(query, Property.class)
            .build();

        Toast.makeText(getContext(),options.toString(),Toast.LENGTH_LONG).show();
    mAdapter = new DiscoverAdapter(options);
    RecyclerView recyclerView = root.findViewById(rvView);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.HORIZONTAL,false));
    recyclerView.setAdapter(mAdapter);
    mAdapter.startListening();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 10:00:20

当您对Cloud数据库执行GeoQuery并使用addGeoQueryDataEventListener()时,必须实现以下几种方法。在您的示例中,其中一个方法被称为onDocumentEntered()。如您所见,它有两个参数,第一个参数是DocumentSnapshot类型。此对象包含范围内的所有位置对象。为了能够显示这些位置,您需要遍历DocumentSnapshot对象并获取所有位置。

要显示RecyclerView中的所有位置,首先需要创建一个位置列表。因此,在迭代时,将所有location对象添加到列表中。然后简单地创建一个适配器并将该列表传递给它的构造函数。将适配器设置为RecyclerView,您就完成了。

如果您认为可以将GeoQuery传递给FirestoreRecyclerOptions对象,就像在查询Cloud数据库时通常所做的那样,请注意这是不可能的,因为GeoQuery类做的是而不是扩展com.google.firebase.firestore.Query

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56375015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档