Java 在Firebase | android中搜索数据
我有一个应用程序,我正在使用Firebase实时数据库。我需要从Java 在Firebase | android中搜索数据,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有一个应用程序,我正在使用Firebase实时数据库。我需要从搜索中获取所有数据,并使用此代码: myRef = FirebaseDatabase.getInstance().getReference(); Query query = myRef.orderByChild("Search"); query.addValueEventListener(new ValueEventListener() { @Override public void on
搜索中获取所有数据,并使用此代码:
myRef = FirebaseDatabase.getInstance().getReference();
Query query = myRef.orderByChild("Search");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
GenericTypeIndicator<ArrayList<String>> t = new GenericTypeIndicator<ArrayList<String>>(){};
test2 = dataSnapshot.getValue(t);
假设对象
节点是Firebase数据库根的直接子节点,要解决此问题,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference searchRef = rootRef.child("object").child("Search");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String value = ds.getValue(String.class);
list.add(value);
}
Log.d("TAG", list.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
searchRef.addListenerForSingleValueEvent(valueEventListener);
在问题中添加一个数据库结构示例,在不知道的情况下,不可能给出正确的答案。请添加数据库结构。@AlexMamo好的。你的问题中包含了JSON树的图片。请将其替换为实际的JSON文本,您可以通过单击中的导出JSON链接轻松获取。将JSON作为文本使其具有可搜索性,允许我们轻松地使用它来测试您的实际数据,并在我们的答案中使用它,这通常是一件好事。我做到了。在这个代码片段中,String value=ds.getValue()
编译器指出Required:java.lang.String-Found:java.lang.Object
也许我需要这样写代码:String-value=ds.getValue(String.class)对不起,我弄错了。刚刚编辑了我的答案。它与getValue(String.class)
一起工作吗?在代码Log.d(“TAG”,list)的这个片段中代码>编译器指出错误的第二个参数类型,发现:'java.util.List',必需:'java.lang.String'
更新为List.toString()
。请再次查看我的更新答案。
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference searchRef = rootRef.child("object").child("Search");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String value = ds.getValue(String.class);
list.add(value);
}
Log.d("TAG", list.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
searchRef.addListenerForSingleValueEvent(valueEventListener);
Eggs
Milk
Apples
Carrot
Sugar
Potato