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
我一直在搜索如何通过 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