有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带Firebase arrayList和数据过滤的java Android测试

如何获取所有数据的列表,但仅限于具有以下条目的数据:

This is a fragment of my firebase database click on the link

我的代码是:

private void initialize() {

    mDatabase = FirebaseDatabase.getInstance().getReference();
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setIcon(R.mipmap.ic_launcher);

    mDatabase.child("his").addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            quesList1 = new ArrayList < QuestionHist > ();
            for (DataSnapshot q: dataSnapshot.getChildren()) {
                quesList1.add(q.getValue(QuestionHist.class));
            }


            final Bundle bun = getIntent().getExtras();
            final String subjectQuiz = bun.getString("subject");
            //quesList1 = db.getQuestionsFromSubjectAndLevel(subjectQuiz, 1);
            //quesList2 = db.getQuestionsFromSubjectAndLevel(subjectQuiz, 2);
            //quesList3 = db.getQuestionsFromSubjectAndLevel(subjectQuiz, 3);
            Collections.shuffle(quesList1);
            //Collections.shuffle(quesList2);
            //Collections.shuffle(quesList3);
            final Handler handler = new Handler();


            txtQuestion = (TextView) findViewById(R.id.txtQuestion);
            button1 = (Button) findViewById(R.id.button1);
            button2 = (Button) findViewById(R.id.button2);
            button3 = (Button) findViewById(R.id.button3);
            button4 = (Button) findViewById(R.id.button4);
            picture = (ImageView) findViewById(R.id.picture);

            picture.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (isImageFitToScreen) {
                        isImageFitToScreen = false;
                        picture.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0.19 f));
                        picture.setAdjustViewBounds(true);
                    } else {
                        isImageFitToScreen = true;
                        picture.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
                    }
                }
            });


            mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
            mProgressBar.getProgressDrawable().setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN);
            mProgressBar.setIndeterminate(false);
            mProgressBar.setProgress(licznik);

            mCountDownTimer = new CountDownTimer(40000, 50) {

                @Override
                public void onTick(long millisUntilFinished) {
                    Log.v("Log_tag", "Tick of Progress" + licznik + millisUntilFinished);
                    licznik--;
                    //mProgressBar.setProgress(i);
                    mProgressBar.setProgress((int) Math.round(millisUntilFinished / 50.0));
                }

                @Override
                public void onFinish() {
                    //Do what you want
                    licznik--;
                    mProgressBar.setProgress(licznik);

                    Toast.makeText(getApplicationContext(),
                        "Czas się skończył, zagraj jeszcze raz", Toast.LENGTH_LONG).show();
                    if (level == 1) {
                        Calendar c = Calendar.getInstance();
                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd; HH:mm:ss");
                        String formattedDate = df.format(c.getTime());
                        String scoreString = Integer.toString(score);
                        Score scoreTOdb = new Score(formattedDate, subjectQuiz, scoreString, "1");
                        // db.addScore(scoreTOdb);
                    } else if (level == 2) {
                        Calendar c = Calendar.getInstance();
                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd; HH:mm:ss");
                        String formattedDate = df.format(c.getTime());
                        String scoreString = Integer.toString(score);
                        Score scoreTOdb = new Score(formattedDate, subjectQuiz, scoreString, "2");
                        //db.addScore(scoreTOdb);

                    } else {
                        Calendar c = Calendar.getInstance();
                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd; HH:mm:ss");
                        String formattedDate = df.format(c.getTime());
                        String scoreString = Integer.toString(score);
                        Score scoreTOdb = new Score(formattedDate, subjectQuiz, scoreString, "3");
                        //db.addScore(scoreTOdb);

                    }
                    Intent intent = new Intent(QuestionActivity.this, ResultActivity.class);
                    Bundle b = new Bundle();
                    b.putInt("score", score); //Your score
                    b.putInt("level", level);
                    intent.putExtras(b); //Put your score to your next Intent
                    startActivity(intent);
                    finish();
                }
            };
            currentQ = quesList1.get(qid);
            setQuestionView();
            mCountDownTimer.start();

            button1.setOnClickListener(new View.OnClickListener() {
                @SuppressLint("SimpleDateFormat")
                @Override
                public void onClick(View v) {
                    if (currentQ.getANSWER().equals(button1.getText())) {
                        //write the number of trials in the database
                        //TYMCZASOWO ZABLOKOWANE
                        //db.incrementTrialNFromQuestion(trialCounter, currentQ);

                        if (level == 1 && qid < nbQuestionsLevel1) {
                            button1.setBackgroundResource(R.drawable.button_green);

                            score = score + 2;
                            currentQ = quesList1.get(qid);
                            Log.d("punkty", "Twoje punkty" + score);
                            Log.d("pytanie ", "nr:" + qid);

                            Handler handler = new Handler();
                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    setQuestionView();
                                    mCountDownTimer.cancel();
                                    mCountDownTimer.start();
                                    mProgressBar.setProgress(licznik);
                                }
                            }, 1000);

                        } else if (level == 2 && qid < nbQuestionsLevel2) {
                            button1.setBackgroundResource(R.drawable.button_green);
                            score = score + 5;
                            currentQ = quesList2.get(qid);
                            Log.d("punkty", "Twoje punkty" + score);
                            Handler handler = new Handler();
                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    setQuestionView();
                                    mCountDownTimer.cancel();
                                    mCountDownTimer.start();
                                    mProgressBar.setProgress(licznik);

                                }
                            }, 1000);
                        } else if (level == 3 && qid < nbQuestionsLevel3) {
                            button1.setBackgroundResource(R.drawable.button_green);
                            score = score + 10;
                            currentQ = quesList3.get(qid);
                            Log.d("punkty", "Twoje punkty" + score);
                            Handler handler = new Handler();
                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    setQuestionView();
                                    mCountDownTimer.cancel();
                                    mCountDownTimer.start();
                                    mProgressBar.setProgress(licznik);
                                }
                            }, 1000);
                        } else {
                            if (level == 1) {
                                score = score + 2;
                                currentQ = quesList1.get(qid);
                            } else if (level == 2) {
                                score = score + 5;
                                currentQ = quesList2.get(qid);
                            } else {
                                score = score + 10;
                                currentQ = quesList3.get(qid);
                            }
                            if (level == 1 && qid == nbQuestionsLevel1) {
                                qid = 0;
                                currentQ = quesList2.get(qid);
                                level = 2;
                                trialCounter = 2;
                                button1.setBackgroundResource(R.drawable.button_green);
                                Toast toast = Toast.makeText(getApplicationContext(), "Gratulacje! \n  Wchodzisz na poziom drugi!", Toast.LENGTH_SHORT);
                                LinearLayout toastLayout = (LinearLayout) toast.getView();
                                TextView toastTV = (TextView) toastLayout.getChildAt(0);
                                toastTV.setTextSize(30);
                                toast.show();
                                handler.postDelayed(new Runnable() {
                                    @Override
                                    public void run() {
                                        setQuestionView();
                                        mCountDownTimer.cancel();
                                        mCountDownTimer.start();
                                        mProgressBar.setProgress(licznik);


                                    }
                                }, 1000);

我需要:

if select queslist1 - get all data only: level 1
if select queslist2 - get all data only: level 2
if select queslist3 - get all data only: level 3

请帮帮我 谢谢!


共 (1) 个答案

  1. # 1 楼答案

    我猜你想问

    mDatabase.child("CHILD1").orderByChild("CHILD2/level").equalTo(1)
    

    我看不到所有的数据库结构,所以CHILD1和CHILD2都在你的数据库中