检查Firebase查询是否返回空(不存在)

时间:2020-07-09 09:14:34

标签: android firebase firebase-realtime-database android-recyclerview searchview

我正在对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();
}

1 个答案:

答案 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文档,我从上面获得了上面的代码。

相关问题