7ut*_*fah 5 android firebase searchview firebase-realtime-database
我一直在搜索如何通过 vaule 在 firebase 中搜索,但我无法得到完整的答案,所以我现在问......
我使用了这个方法,但无法得到正确的结果:
我需要按“用户名”搜索。
这是我的数据库:
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;
}
});
Run Code Online (Sandbox Code Playgroud)
而且我也用过:
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;
}
});
Run Code Online (Sandbox Code Playgroud)
但我不能,所以有人可以给我完全正确的答案吗
感谢 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;
}
});
}
Run Code Online (Sandbox Code Playgroud)
所以请检查方法是否正确..
Ata*_*er 1
假设我正在寻找迈克。首先,通过用户名将所有用户带入mDatabase.child("Users").orderByChild("Username"). 但我想要迈克的数据,所以我添加了.equalTo("Mike")。正如我所说,这会返回一个查询,然后设置一个.addListenerForSingleValueEvent来获取迈克的数据。我想要的信息将以可迭代对象的形式出现,其中包含此回调中的一项。然后将其投射到您的用户模式。
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) {
}
});
Run Code Online (Sandbox Code Playgroud)
据我在你的代码中看到的,你得到了查询,mQuery = mDatabase.orderByChild(A).equalTo(newText)但你没有用它做任何事情。
也许这个人可以帮助你 https://www.youtube.com/watch?v=3WTQZV5-roY
| 归档时间: |
|
| 查看次数: |
8071 次 |
| 最近记录: |