Я все еще очень плохо знаком с Android Dev и создаю приложение, которое берет информацию из базы данных Firebase.С каждым переключателем, который нажимается в приложении, следующий экран, который появляется, является следующим критерием (это настройка теста с множественным выбором).Однако я не хочу, чтобы каждый критерий отображался линейно.Идея такова:
- Экран начинается с «критерия 1», затем пользователь выбирает вариант А, вариант В или вариант С.
- Если пользователь выбирает вариант А, тоСледующим показанным экраном будет «критерии 15» вместо «критерии 2».Точно так же, если пользователь выбирает вариант B, следующим экраном будет «критерии 12» вместо «критерии 2» и т. Д.
Пока что сама интеграция настроена правильно.Каждый критерий отображается, но он отображается только линейно, так как я просто увеличиваю свой метод updateQuestion на единицу.Мне интересно, как кодировать что-то вроде «начать по критерию 1, если выбран вариант А, откройте критерий 15», который берет информацию из Firebase.Однако это должно быть сделано довольно много раз, и с каждым критерием то же самое должно происходить с теми же переменными, которые считывают данные из выделенных данных из базы данных.
Вот мой файл класса:
package com.example.android.mineralapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.firebase.client.ValueEventListener;
public class quiz extends AppCompatActivity {
private TextView mQuestion;
private Button mButtonradio0, mButtonradio1, mButtonradio2, mButtonchoiceD;
private Firebase mQuestionRef, mradio0Ref, mradio1Ref, mradio2Ref, mchoiceDRef;
private int mQuestionNumber = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_quiz );
mQuestion = (TextView) findViewById(R.id.question);
mButtonradio0 = (Button)findViewById( R.id.radio0 );
mButtonradio1 = (Button)findViewById( R.id.radio1 );
mButtonradio2 = (Button)findViewById( R.id.radio2 );
mButtonchoiceD = (Button) findViewById( R.id.choiceD );
updateQuestion(); //void constructor
mButtonradio0.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
mButtonradio0.getText();
updateQuestion();
}
} ); //find out how: update questions when you click on radio button 0, needs to go to appropriate criteria
mButtonradio1.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
mButtonradio1.getText();
updateQuestion();
}
} ); //find out how: update questions when you click on radio button 1, needs to go to appropriate criteria
mButtonradio2.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mButtonradio2.getText().equals( null )) //find out how: if no value, delete option
{
updateQuestion();
}
else {
updateQuestion();
}
}
} );//find out how: update questions when you click on radio button 2, needs to go to appropriate criteria
mButtonchoiceD.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
mButtonchoiceD.getText();
updateQuestion();
}
} ); //find out how: update questions when you click on radio button 1, needs to go to appropriate criteria
}
public void updateQuestion()
{
mQuestionRef = new Firebase( "https://mineralapp-79369.firebaseio.com/"+ mQuestionNumber +"/question");
mQuestionRef.addValueEventListener( new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String question = dataSnapshot.getValue(String.class);
mQuestion.setText( question );
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
} );
mradio0Ref = new Firebase("https://mineralapp-79369.firebaseio.com/"+ mQuestionNumber +"/radio0");
mradio0Ref.addValueEventListener( new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice = dataSnapshot.getValue(String.class);
mButtonradio0.setText( choice );
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
} );
mradio1Ref = new Firebase("https://mineralapp-79369.firebaseio.com/" + mQuestionNumber + "/radio1");
mradio1Ref.addValueEventListener( new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice = dataSnapshot.getValue(String.class);
mButtonradio1.setText( choice );
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
} );
mradio2Ref = new Firebase("https://mineralapp-79369.firebaseio.com/" + mQuestionNumber + "/radio2");
mradio2Ref.addValueEventListener( new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice = dataSnapshot.getValue(String.class);
mButtonradio2.setText( choice );
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
} );
mchoiceDRef = new Firebase("https://mineralapp-79369.firebaseio.com/" + mQuestionNumber + "/choiceD");
mchoiceDRef.addValueEventListener( new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String choice = dataSnapshot.getValue(String.class);
mButtonchoiceD.setText( choice );
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
} );
mQuestionNumber++; //update question
}
}