Quiz Images ответы - PullRequest
       11

Quiz Images ответы

0 голосов
/ 09 октября 2018

Я пытаюсь создать тест для детей по аутистическому спектру.Я хочу использовать изображения для ответов или, что еще лучше, кнопки с изображениями примерно так https://gyazo.com/2309e055184a4840c23a07bda0a5bf63. Мое приложение работает, но когда я делаю тест, я не могу получить правильные ответы, только неправильные.Похоже, оператор if не работает.Я хочу получить четыре статических ответа и только изменение ImageView.Я не знаю, что делать.

public class Category2 extends AppCompatActivity{

    private database2 database2 = new database2();
    private ImageButton imageChoice1,imageChoice2,imageChoice3,imageChoice4;
    ImageView iv_Pic;
    private Button imageAnswerSpace;
    int quizCount = 0;
    int rightAnswerCount = 0;
    private int mAnswer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_category2);

        iv_Pic = (ImageView) findViewById(R.id.iv_Pic);
        imageChoice1 = (ImageButton) findViewById(R.id.imageview1);
        imageChoice2 = (ImageButton) findViewById(R.id.imageview2);
        imageChoice3 = (ImageButton) findViewById(R.id.imageview3);
        imageChoice4 = (ImageButton) findViewById(R.id.imageview4);

        newQ();  

        imageChoice1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {    
                if (v.getId() == R.id.imageview1 && (v.getId() == mAnswer)) {
                    Toast.makeText(Category2.this, "correct", Toast.LENGTH_SHORT).show();
                    newQ();
                } else {
                    Toast.makeText(Category2.this, "wrong", Toast.LENGTH_SHORT).show();
                    newQ();
                }
            }
        });

        imageChoice2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.imageview2 &&  (v.getId()== mAnswer)){
                    Toast.makeText(Category2.this, "correct", Toast.LENGTH_SHORT).show();
                    newQ();
                } else {
                    Toast.makeText(Category2.this, "wrong", Toast.LENGTH_SHORT).show();
                    newQ();
                }
            }
        });

        imageChoice3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.imageview3 && (v.getId()== mAnswer)) {
                    Toast.makeText(Category2.this, "correct", Toast.LENGTH_SHORT).show();    
                    newQ();
                } else {
                    Toast.makeText(Category2.this, "wrong", Toast.LENGTH_SHORT).show();
                    newQ();
                }
            }
        });

        imageChoice4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.imageview4 && (v.getId()== mAnswer)) {
                    Toast.makeText(Category2.this, "correct", Toast.LENGTH_SHORT).show();
                    newQ();
                } else {
                    Toast.makeText(Category2.this, "wrong", Toast.LENGTH_SHORT).show();
                    newQ();
                }
            }
        });
    }

    public void newQ() {

        iv_Pic.setImageResource(database2.getImages(quizCount));

        ImageView changeImage0 = findViewById(R.id.imageview1);
        changeImage0.setImageResource(database2.getChoice1(quizCount));

        ImageView changeImage1 = findViewById(R.id.imageview2);                    
        changeImage1.setImageResource(database2.getChoice2(quizCount));

        ImageView changeImage3 = findViewById(R.id.imageview3);        
        changeImage3.setImageResource(database2.getChoice3(quizCount));

        ImageView changeImage4 = findViewById(R.id.imageview4);
        changeImage4.setImageResource(database2.getChoice4(quizCount));

        mAnswer = database2.getCorrectAnswer(quizCount);

        if (quizCount < 4) {
            quizCount++;
        } else if (quizCount == 4) {
            quizCount = 0;
        }
    }
}

public class database2 {

    private Integer mImages[] = {
        R.drawable.sad,
        R.drawable.happy,
        R.drawable.fear,
        R.drawable.angry,
    };
    public static int mChoices[] [] = {
        {
           R.drawable.ic_angry,
           R.drawable.ic_sad,
           R.drawable.ic_scared,
           R.drawable.ic_smiling
        }, {
           R.drawable.ic_angry,
           R.drawable.ic_sad,
           R.drawable.ic_scared,
           R.drawable.ic_smiling
       }, {
           R.drawable.ic_angry,
           R.drawable.ic_sad,
           R.drawable.ic_scared,
           R.drawable.ic_smiling
        }, {
           R.drawable.ic_angry,
           R.drawable.ic_sad,
           R.drawable.ic_scared,
           R.drawable.ic_smiling
        }
    };

    private Integer mCorrectAnswer[] = {
        R.drawable.ic_sad,
        R.drawable.ic_smiling,
        R.drawable.ic_scared,
        R.drawable.ic_angry
    };

    public Integer getImages(int a){
        Integer image = mImages[a];
        return image;
    }
    public Integer getChoice1(int a){
        int choice0 = mChoices[a][0];
        return choice0;
    }
    public Integer getChoice2(int a){
        int choice1 = mChoices[a][1];
        return choice1;
    }
    public Integer getChoice3(int a){
        int choice2 = mChoices[a][2];
        return choice2;
    }
    public Integer getChoice4(int a){
        int choice3 = mChoices[a][3];
        return choice3;
    }

    public Integer getCorrectAnswer(int a){
        Integer answer = mCorrectAnswer[a];
        return answer;
    }
}

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

массив ответов должен выглядеть примерно так:

private Integer mCorrectAnswer[] ={
    R.id.ic_sad,
    R.id.ic_smiling,
    R.id.ic_scared,
    R.id.ic_angry
};

, и его нужно сравнить с mCorrectAnswer.get(quizCount).

0 голосов
/ 09 октября 2018

Причина, по которой вы всегда видите «неправильный» ответ, заключается в том, что вы сравниваете идентификатор представления с доступным для рисования идентификатором в слушателе onClick.v.getId()== mAnswer.mAnswer является одним из

private Integer mCorrectAnswer[] ={
        R.drawable.ic_sad,
        R.drawable.ic_smiling,
        R.drawable.ic_scared,
        R.drawable.ic_angry
};

, тогда как v.getId () является одним из

R.id.imageview1
R.id.imageview2
R.id.imageview3
R.id.imageview4

. В качестве краткосрочного решения вы можете изменить mCorrectAnswer для использования идентификаторов ImageView вместо идентификаторов для рисования.Однако это, вероятно, будет трудно поддерживать, поэтому было бы лучше использовать другую логику, которая не зависит от идентификаторов ресурсов.

...