Firebase 按字符搜索

Firebase searching by character

我在我的 firebase 应用程序中使用 FirebaseRecyclerAdapter,直到现在我仍然不知道如何按字符在 Firebase 中搜索,我已经使用了一个查询并且我得到了一个很好的结果但它不可用,这里是我要搜索的数据库:

这是我使用的方法,但如果我只输入全名,它会得到 "Username",所以如果我写 "m" 什么也没有显示:

mMainSearcher.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            Query Q = mDatabase.child("Users").orderByChild("Username").equalTo(newText);

            FirebaseRecyclerAdapter<Getting_Friends, Search.SearchViewHolder> firebaseRecyclerAdapter22 = new FirebaseRecyclerAdapter<Getting_Friends, Search.SearchViewHolder>(
                    Getting_Friends.class, R.layout.my_friends_card, Search.SearchViewHolder.class, Q) {
                @Override
                protected void populateViewHolder(final Search.SearchViewHolder viewHolder, final Getting_Friends model, int position) {

                    viewHolder.setUsername(model.getUsername());
                    viewHolder.setProfile(getApplicationContext(), model.getProfile());

                }
            };
            mFriendsRecyclerView.setAdapter(firebaseRecyclerAdapter22);
        return false;
        }
    });

这是我输入全名时得到的结果:

这是我写 "M" 或 "m" 时得到的结果:

所以我只需要 >> 当我自动写 "m" 时,所有以 "m" 开头的用户名必须像 mike 一样显示。

发生这种情况是因为您正在使用:

Query Q = mDatabase.child("Users").orderByChild("Username").equalTo(newText);

equalsTo 创建的查询仅限于具有给定值的 return 个子节点。

您应该使用方法 startAt 创建一个查询,该查询仅限于 return 个值大于或等于给定值的子节点,使用给定的 orderBy 指令或优先级作为默认值.

试试这个

Query Q = mDatabase.child("Users").orderByChild("Username").startAt(newText).endAt("~");