我正在对firebaseRecyclerAdapter(firebaseOptions)使用过滤器查询。
自从我使用searchView以来,如果查询存在,回收站将使用每个键入的字母进行更新。
问题是,如果查询不存在,我想清除回收站。
如何添加检查以查看查询是否成功?
我正在执行搜索,如果查询存在,我将填充recyclerview,如果查询不存在,我将清除recyclerview。
public void fireSearch(String queryInput) {
String start = queryInput.toUpperCase(), end = queryInput.toLowerCase() + "\uf8ff";
Log.d("myTag", start + " " + end);
firebaseQuery = databaseReference.orderByKey().startAt(start).endAt(end);
searchRecyclerView.setVisibility(View.VISIBLE);
FirebaseRecyclerOptions<BusinessDetails> options =
new FirebaseRecyclerOptions.Builder<BusinessDetails>()
.setQuery(firebaseQuery, BusinessDetails.class)
.setLifecycleOwner(this)
.build();
}
答案 0 :(得分:1)
如果查询没有结果,则FirebaseRecyclerViewAdapter
将清除现有数据。您无需自己处理此案。
如果您想在没有数据的情况下执行其他工作,则可以在适配器类中覆盖onDataChanged
方法。
FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<Chat, ChatHolder>(options) {
// ...
@Override
public void onDataChanged() {
// Called each time there is a new data snapshot. You may want to use this method
// to hide a loading spinner or check for the "no documents" state and update your UI.
// ...
}
@Override
public void onError(DatabaseError e) {
// Called when there is an error getting data. You may want to update
// your UI to display an error message to the user.
// ...
}
};
另请参阅data and error events上的FirebaseUI文档,我从上面获得了上面的代码。