我正在我的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) {
}
});
}
当我删除startAt
或endAt
时,会显示两个数据中的任何一个,但不会显示正确的数据,但是当它们都被添加时,什么也没有显示,并且我的日志“ New datasnapshot”没有显示甚至不会被打印出来。我正在搜索数据库中拥有的游戏的名称。
答案 0 :(得分:1)
根据您的评论,您的代码无法正常工作的原因是因为传递给name
和startAt()
方法的endAt
变量的值不正确。
解决该问题的关键是将数据库中存在的完全相同的name
作为参数传递给这两种方法,在这种情况下,您应该使用小写字母搜索名称。