将 Geofirestore 文档结果加载到 RecyclerView
Load Geofirestore documents results into RecyclerView
我使用 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();
}
当您对 Cloud Firestore 数据库执行 GeoQuery
并使用 addGeoQueryDataEventListener()
时,必须实施一些方法。在您的示例中,其中一种方法称为 onDocumentEntered()
。如您所见,它有两个参数,第一个是 DocumentSnapshot
类型。该对象包含您范围内的所有位置对象。为了能够显示这些位置,您需要遍历 DocumentSnapshot
对象并获取所有位置。
要显示 RecyclerView
中的所有位置,您首先需要创建一个位置列表。因此,当您迭代时,将所有位置对象添加到列表中。然后简单地创建一个适配器并将该列表传递给它的构造函数。将适配器设置为 RecyclerView
即可完成。
如果您认为可以将 GeoQuery
传递给 FirestoreRecyclerOptions
对象,就像您通常在查询 Cloud Firestore 数据库时所做的那样,请注意这是不可能的,因为 GeoQuery class 不 扩展 com.google.firebase.firestore.Query
.
我使用 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();
}
当您对 Cloud Firestore 数据库执行 GeoQuery
并使用 addGeoQueryDataEventListener()
时,必须实施一些方法。在您的示例中,其中一种方法称为 onDocumentEntered()
。如您所见,它有两个参数,第一个是 DocumentSnapshot
类型。该对象包含您范围内的所有位置对象。为了能够显示这些位置,您需要遍历 DocumentSnapshot
对象并获取所有位置。
要显示 RecyclerView
中的所有位置,您首先需要创建一个位置列表。因此,当您迭代时,将所有位置对象添加到列表中。然后简单地创建一个适配器并将该列表传递给它的构造函数。将适配器设置为 RecyclerView
即可完成。
如果您认为可以将 GeoQuery
传递给 FirestoreRecyclerOptions
对象,就像您通常在查询 Cloud Firestore 数据库时所做的那样,请注意这是不可能的,因为 GeoQuery class 不 扩展 com.google.firebase.firestore.Query
.