我使用哈希图从用户想要的过滤数据片段中获取数据 显示,并且我想建立一个动态的Firestore提取查询,但是我 不知道这是否是正确的方法。
我是Firestore查询的新手,但我尝试通过使用foreach将变量存储到查询中来设置动态查询的建立,在代码中说明了如何转换此代码
Query filterQuery= db.collection("Property").
.whereEqualTo("noBathrooms", "5")
.whereEqualTo("noRooms", "2");
对此。
for(Map.Entry<String, Object> entry : list.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().toString();
filterQuery=propertyRef.whereEqualTo(key,value);
}
在这里设置查询
public void filterData(){
Query filterQuery =null;
for(Map.Entry<String, Object> entry : list.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().toString();
Log.i(key,value);
filterQuery=propertyRef.whereEqualTo(key,value);
}
dataFetch(filterQuery,R.id.rentRV);
}
,在这里我要建立它
private void dataFetch(Query query,int rvView){
FirestoreRecyclerOptions<Property> options = new
FirestoreRecyclerOptions.Builder<Property>()
.setQuery(query, Property.class)
.build();
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();
mAdapter.setOnItemClickListener((documentSnapshot, position) -> {
Property property = documentSnapshot.toObject(Property.class);
String id = documentSnapshot.getId();
Bundle mBundle = new Bundle();
mBundle.putString("id", id);
Toast.makeText(getContext(), id, Toast.LENGTH_SHORT).show();
});
}