Firebase搜索查询在Android上不起作用

时间:2018-07-05 20:59:55

标签: android firebase firebase-realtime-database

我正在我的android应用中实现搜索,但似乎无法使其正常工作。

public void loadReleaseData(String name) {
    mDatabase.child("releases")
            .child("europe")
            .child("data").orderByChild("game/name").startAt(name)
            .endAt(name+"\uf8ff")
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if (dataSnapshot.hasChildren()) {
                        Log.d(TAG, "New datasnapshot");
                        for (DataSnapshot data : dataSnapshot.getChildren()) {
                            _Release release = data.getValue(_Release.class);
                            if (release != null) {
                                // No platform filter set add all releases!
                                list.add(release);
                                if (release.getGame() != null) {
                                    Log.d(TAG, "NAME: " + release.getGame().getName());
                                }
                            }
                            mUpcomingGamesAdapter.notifyDataSetChanged();
                        }
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

}

当我删除startAtendAt时,会显示两个数据中的任何一个,但不会显示正确的数据,但是当它们都被添加时,什么也没有显示,并且我的日志“ New datasnapshot”没有显示甚至不会被打印出来。我正在搜索数据库中拥有的游戏的名称。

我的Firebase数据库: My database structure

1 个答案:

答案 0 :(得分:1)

根据您的评论,您的代码无法正常工作的原因是因为传递给namestartAt()方法的endAt变量的值不正确。 解决该问题的关键是将数据库中存在的完全相同的name作为参数传递给这两种方法,在这种情况下,您应该使用小写字母搜索名称。