微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Firebase Android SearchView的值

我一直在搜索有关如何通过vaule搜索firebase的搜索,我无法完全回答所以我现在要问…

我使用过这种方法,但无法得到正确的结果:

我需要搜索用户名”.

这是我的数据库

enter image description here

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帮助我,也感谢您尽可能多地帮助我,但我仍然没有从搜索视图中得到任何结果,所以我将提供我班上的方法

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”)将所有用户带到.swountByChild(“Username”).但我想要Mike的数据,所以我添加.equalTo(“Mike”).这会返回一个查询,然后设置一个.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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐