Интеграция Firebase и Android Studio для вопросов с несколькими вариантами ответов - PullRequest
0 голосов
/ 29 декабря 2018

Я все еще очень плохо знаком с 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...