Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在firebase中进行查询?_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 如何在firebase中进行查询?

Java 如何在firebase中进行查询?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我在Firebase中查询数据时遇到问题。我试着用与科学相等的学科来提问。我的引用是classes,然后我的child是key/id,之后我有一个称为user info的孩子。 以下是我的数据库结构: "Classes" : { "-Li9nBUgnFmCWqUmwV5W" : { "class_info" : { "date_clasname" : "August 6, 2019", "room_number" : "131", "subject" : "Scien

我在Firebase中查询数据时遇到问题。我试着用与科学相等的学科来提问。我的引用是classes,然后我的child是key/id,之后我有一个称为user info的孩子。 以下是我的数据库结构:

"Classes" : {
"-Li9nBUgnFmCWqUmwV5W" : {
  "class_info" : {
    "date_clasname" : "August 6, 2019",
    "room_number" : "131",
    "subject" : "Science",
    "teacher" : "Ms.Henry",
    "id" : "-Li9nBUgnFmCWqUmwV5W"
  }
},
"-Li9n_IYwbTNPdNAsTAu" : {
  "class_info" : {
    "date_clasname" : "August 6, 2019",
    "room_number" : "131",
    "subject" : "Math",
    "teacher" : "Ms.Henry",
    "id" : "-Li9n_IYwbTNPdNAsTAu"
  }
},
"-Li9naUipsa865NBpZjW" : {
  "class_info" : {
    "date_clasname" : "August 6, 2019",
    "room_number" : "131",
    "subject" : "Other",
    "teacher" : "Ms.Henry",
    "id" : "-Li9naUipsa865NBpZjW"
  }
},
"-Li9nbpwp2qchwmZRDP9" : {
  "class_info" : {
    "date_clasname" : "August 6, 2019",
    "room_number" : "131",
    "subject" : "Technology",
    "teacher" : "Ms.Henry",
    "id" : "-Li9nbpwp2qchwmZRDP9"
  }
},
"-Li9ne0NDyjcB4SIWi1z" : {
  "class_info" : {
    "date_clasname" : "August 6, 2019",
    "room_number" : "131",
    "subject" : "Social Studies",
    "teacher" : "Ms.Henry",
    "id" : "-Li9ne0NDyjcB4SIWi1z"
  }
}
 },
以下是执行查询的活动的代码:

public class Science_classes extends AppCompatActivity {



private FirebaseDatabase database;
 private  DatabaseReference myRef;
 private List<Listdata> list;
 private RecyclerView recyclerview;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_science_classes);
    recyclerview = (RecyclerView) findViewById(R.id.rview);
    database = FirebaseDatabase.getInstance();
    myRef = database.getReference("Classes");


    Query query = myRef.orderByChild("subject").equalTo("Science");
    System.out.println(query);
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            list = new ArrayList<>();
            // StringBuffer stringbuffer = new StringBuffer();
            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                Class_model new_class = dataSnapshot1.getValue(Class_model.class);
                String nameofclass = new_class.getDate_clasname();
                String teacherofclass = new_class.getTeacher();
                String roomnumberofclass = new_class.getRoom_number();
                String class_key = new_class.getUid();
                Listdata listdata = new Listdata(nameofclass, teacherofclass, roomnumberofclass, class_key);
                //String name = userdetails.getName();
                //String email = userdetails.getEmail();
                //String address = userdetails.getAddress();
                listdata.setDate_class(nameofclass);
                listdata.setTeacher(teacherofclass);
                listdata.setRnumber(roomnumberofclass);
                list.add(listdata);
                // Toast.makeText(MainActivity.this,""+name,Toast.LENGTH_LONG).show();

            }

            RecyclerviewAdapter2 recycler = new RecyclerviewAdapter2(list);
            RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(Science_classes.this);
            recyclerview.setLayoutManager(layoutmanager);
            recyclerview.setItemAnimator(new DefaultItemAnimator());
            recyclerview.setAdapter(recycler);

        }

        @Override
        public void onCancelled(DatabaseError error) {
            AlertDialog alertDialog = new AlertDialog.Builder(Science_classes.this).create();
            alertDialog.setTitle("Error");
            alertDialog.setMessage("Check your connection! If, problem persists please email svhsdev@vigoschools.org!");
            alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    });
            alertDialog.show();
            // Failed to read value
            //  Log.w(TAG, "Failed to read value.", error.toException());
        }
    });

}
//});
public class Science\u class扩展应用程序活动{
私有FirebaseDatabase数据库;
私有数据库参考myRef;
私人名单;
私人回收站;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u science\u Class);
recyclerview=(recyclerview)findViewById(R.id.rview);
database=FirebaseDatabase.getInstance();
myRef=database.getReference(“类”);
Query Query=myRef.orderByChild(“主题”).equalTo(“科学”);
System.out.println(查询);
addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
列表=新的ArrayList();
//StringBuffer StringBuffer=新的StringBuffer();
对于(DataSnapshot dataSnapshot1:DataSnapshot.getChildren()){
Class\u model new\u Class=dataSnapshot1.getValue(Class\u model.Class);
String nameofclass=new_class.getDate_clasname();
String teacherofclass=new_class.getTeacher();
字符串roomnumberofclass=new_class.getRoom_number();
String class_key=new_class.getUid();
Listdata Listdata=新的Listdata(班级名称、班级教师、班级房间号、班级钥匙);
//String name=userdetails.getName();
//字符串email=userdetails.getEmail();
//字符串地址=userdetails.getAddress();
setDate_类(类的名称);
settacher(类的教师);
listdata.setRnumber(roomnumberofclass);
list.add(listdata);
//Toast.makeText(MainActivity.this,“+名称,Toast.LENGTH_LONG.show();
}
RecycleServiceAdapter2 recycler=新的RecycleServiceAdapter2(列表);
RecyclerView.LayoutManager LayoutManager=新的LinearLayoutManager(Science\u classes.this);
recyclerview.setLayoutManager(layoutmanager);
setItemAnimator(新的DefaultItemAnimator());
recyclerview.setAdapter(回收器);
}
@凌驾
已取消的公共无效(DatabaseError错误){
AlertDialog AlertDialog=新建AlertDialog.Builder(Science_classes.this).create();
alertDialog.setTitle(“错误”);
alertDialog.setMessage(“检查您的连接!如果问题仍然存在,请发送电子邮件svhsdev@vigoschools.org!");
alertDialog.setButton(alertDialog.BUTTON_中性,“确定”,
新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
dialog.dismise();
}
});
alertDialog.show();
//无法读取值
//Log.w(标记“读取值失败”,error.toException());
}
});
}
//});

提前谢谢你…如果你有任何问题,请告诉我

为了能够查询科目等于
科学
的所有课程,请更改以下查询:

Query query = myRef.orderByChild("subject").equalTo("Science");


看,您缺少一个孩子,
class\u info
。BIULD引用时必须存在该项。

那么错误是什么?@MohammadSommakia我不知道如何引用由firebase在我的查询中生成的唯一键的子项,因为每个子项都会发生更改。除了一个消息之外,没有错误,我应该考虑添加“.Noxon”:“主题”。“如果firebase生成的id下唯一的子项是
class_info
,最简单的解决方案是删除它,并将firebase生成的值设置为您的
,其余的
class_info
值我需要它在其他地方@BenShmuel
Query query = myRef.orderByChild("class_info\subject").equalTo("Science");