我使用GeoFirestore来查找最近的位置,它成功了,但是我需要将我获得的文档加载到RecyclerView中,怎么可能做到这一点呢?
GeoFirestore方法
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
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();
}发布于 2019-05-30 10:00:20
当您对Cloud数据库执行GeoQuery并使用addGeoQueryDataEventListener()时,必须实现以下几种方法。在您的示例中,其中一个方法被称为onDocumentEntered()。如您所见,它有两个参数,第一个参数是DocumentSnapshot类型。此对象包含范围内的所有位置对象。为了能够显示这些位置,您需要遍历DocumentSnapshot对象并获取所有位置。
要显示RecyclerView中的所有位置,首先需要创建一个位置列表。因此,在迭代时,将所有location对象添加到列表中。然后简单地创建一个适配器并将该列表传递给它的构造函数。将适配器设置为RecyclerView,您就完成了。
如果您认为可以将GeoQuery传递给FirestoreRecyclerOptions对象,就像在查询Cloud数据库时通常所做的那样,请注意这是不可能的,因为GeoQuery类做的是而不是扩展com.google.firebase.firestore.Query。
https://stackoverflow.com/questions/56375015
复制相似问题