Firebase Android 按值搜索视图

Firebase Android SearchView by values

我一直在搜索如何通过 vaule 在 firebase 中进行搜索,但我无法得到完整的答案,所以我现在要问...

我用过这个方法,结果没有得到正确的结果:

我需要按 "Username" 搜索。

这是我的数据库:

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

                @Override
                public boolean onQueryTextChange(String newText) {

                    mQuery = mDatabase.orderByChild("Username");


                    return false;
                }
            });

我也用过:

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

                @Override
                public boolean onQueryTextChange(String newText) {

                    mQuery = mDatabase.orderByChild("Username").equalTo(newText)


                    return false;
                }
            });

但是我做不到所以请任何人给我完全正确的答案


感谢 AtaerCaner 帮助我,也感谢你尽可能地帮助我,但我仍然没有从搜索视图中得到任何结果,所以我将提供我的 [=35] 中的方法=]:

mDatabase.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(final DataSnapshot dataSnapshot, String s) {
                    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                        @Override
                        public boolean onQueryTextSubmit(String query) {

                            String A = (String) dataSnapshot.child(Post_Key).child("Username").getValue();
                            mQuery = mDatabase.orderByChild(A).equalTo(query);


                            return false;
                        }

                        @Override
                        public boolean onQueryTextChange(String newText) {
                            String A = (String) dataSnapshot.child(Post_Key).child("Username").getValue();
                            mQuery = mDatabase.orderByChild(A).equalTo(newText);
                            return false;
                        }
                    });
                }

所以请检查方法是否正确..

假设我正在寻找迈克。首先,通过 mDatabase.child("Users").orderByChild("Username") 的用户名带来所有用户。但是我想要 Mike 的数据,所以我添加了 .equalTo("Mike")。这个 returns 正如我所说的查询然后设置一个 .addListenerForSingleValueEvent 来获取 Mike 的数据。我想要的信息将作为可迭代对象与此回调中的一项一起出现。然后将其投射到您的用户模式。

mDatabase.child("Users").orderByChild("Username").equalTo("Mike").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                  User user = dataSnapshot.getChildren().iterator().next().getValue(User.class);
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

据我在您的代码中看到,您使用 mQuery = mDatabase.orderByChild(A).equalTo(newText) 获得了查询,但您没有对它执行任何操作。

也许这个人可以帮助你 https://www.youtube.com/watch?v=3WTQZV5-roY