如何获取所有数据的列表,但仅包含具有以下条目的数据:
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
请帮帮我 谢谢
答案 0 :(得分:0)
我想你想要查询
mDatabase.child("CHILD1").orderByChild("CHILD2/level").equalTo(1)
我看不到所有数据库结构,所以CHILD1和CHILD2在你的数据库中