Java 在Firebase | android中搜索数据

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

我有一个应用程序,我正在使用Firebase实时数据库。我需要从
搜索中获取所有数据,并使用此代码:

      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