【发布时间】:2018-06-19 09:24:12
【问题描述】:
我知道这是一个愚蠢的问题,但我需要知道我这样做是否正确。我正在使用 firebase firestore 数据库来存储在我的 Android 应用程序中排序和过滤的属性数据。用户可以根据区域过滤这些属性,即如果他选择特定区域,则仅列出这些区域的属性,如果他选择“全部”,则将列出所有属性。我通过以下代码实现了这个逻辑:-
private void updateListViewOldest(String city, String area, Long type) {
final ArrayList<PropertyListObject> objects = new ArrayList<>();
FirebaseFirestore db = FirebaseFirestore.getInstance();
if (area.equals("All")) {
db.collection("Properties")
.orderBy("postTime", Query.Direction.ASCENDING)
.whereEqualTo("city", city)
.whereEqualTo("type", type)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
propertyListPosition.add(document.getId());
PropertyFetchObject pfo = document.toObject(PropertyFetchObject.class);
objects.add(new PropertyListObject(pfo.getPrice(), pfo.getName(), pfo.getArea(), pfo.getSize(), getTime(pfo.getPostTime()), pfo.getCity()));
}
PropertiesListAdapter propertyAdapter = new PropertiesListAdapter(PropertyAds.this, objects);
adsListView.setAdapter(propertyAdapter);
} else {
Toast.makeText(PropertyAds.this, "error: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
} else {
db.collection("Properties")
.orderBy("postTime", Query.Direction.ASCENDING)
.whereEqualTo("city", city)
.whereEqualTo("type", type)
.whereEqualTo("area", area) // just added this
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
propertyListPosition.add(document.getId());
PropertyFetchObject pfo = document.toObject(PropertyFetchObject.class);
objects.add(new PropertyListObject(pfo.getPrice(), pfo.getName(), pfo.getArea(), pfo.getSize(), getTime(pfo.getPostTime()), pfo.getCity()));
}
PropertiesListAdapter propertyAdapter = new PropertiesListAdapter(PropertyAds.this, objects);
adsListView.setAdapter(propertyAdapter);
} else {
Toast.makeText(PropertyAds.this, "error: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
}
正在为该行再次编写整个代码
.whereEqualTo("面积", 面积)
对吗?还是有更聪明的方法来做到这一点?
【问题讨论】:
标签: java android function firebase google-cloud-firestore