我正在实现一个搜索页面。所以OnQuerySubmit(),我想加载与用户输入匹配的数据。 这是我在用户提交查询时调用的方法。
public void search(String query) {
Log.d(TAG, query);
Log.d(TAG, "getting laborers");
FirebaseFirestore.getInstance()
.collection("skills")
.orderBy("name")
.startAt(query.trim())
.endAt(query.trim() + "\uf8ff")
.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
String laborID;
labors.clear();
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
laborID = document.get("laborID").toString();
FirebaseFirestore.getInstance().collection("users")
.document(laborID).get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot document) {
String id;
String name;
LaborM tmp = new LaborM(id, name);
if (document.contains("profile"))
tmp.setProfileURL(document.get("profile").toString());
labors.add(tmp);
}
});
}
Toast.makeText(getApplicationContext(),labors.size()+"",Toast.LENGTH_LONG).show();
//I have called the notifyDataSetChange() here in updateLabors(labors)
laborsRecycleAdapter.updateLabors(labors);
}
}
});
}
但是无论用户查询什么,有时回收者视图都不会显示任何内容。尽管有一些与用户查询匹配的数据。但是当搜索视图再次成为焦点时,回收者视图将显示结果。 我已经烤过劳方arraylist的大小,它总是显示0 ??。 我希望搜索完成后立即在回收者视图中显示数据。有人可以帮助我吗? 预先感谢。