Search in sources :

Example 11 with QuizSubmissionQuestion

use of com.instructure.canvasapi2.models.QuizSubmissionQuestion in project instructure-android by instructure.

the class QuizSubmissionQuestionListRecyclerAdapter method addMultipleDropdown.

private void addMultipleDropdown(final QuizSubmissionQuestion baseItem, QuizMultipleDropdownViewHolder holder, int position, int courseColor) {
    addAnsweredQuestion(baseItem);
    QuizMultipleDropdownBinder.bind(holder, baseItem, courseColor, position, shouldLetAnswer, getContext(), embeddedWebViewCallback, webViewClientCallback, new QuizPostMultipleDropdown() {

        @Override
        public void postMultipleDropdown(final long questionId, HashMap<String, Long> answers) {
            QuizManager.postQuizQuestionMultipleDropdown(quizSubmission, questionId, answers, true, new StatusCallback<QuizSubmissionQuestionResponse>() {

                @Override
                public void onResponse(@NonNull Response<QuizSubmissionQuestionResponse> response, @NonNull LinkHeaders linkHeaders, @NonNull ApiType type) {
                    if (type == ApiType.CACHE)
                        return;
                    QuizSubmissionQuestionResponse quizSubmissionQuestionResponse = response.body();
                    if (quizSubmissionQuestionResponse.getQuizSubmissionQuestions() != null) {
                        for (QuizSubmissionQuestion question : quizSubmissionQuestionResponse.getQuizSubmissionQuestions()) {
                            if (baseItem.getId() == question.getId()) {
                                baseItem.setAnswer(question.getAnswer());
                            }
                        }
                        // make sure each answer has a match
                        int numAnswers = 0;
                        // API returns a LinkedTreeMap
                        for (String map : ((LinkedTreeMap<String, String>) baseItem.getAnswer()).values()) {
                            if (map != null && !map.equals("null")) {
                                numAnswers++;
                            }
                        }
                        if (numAnswers == ((LinkedTreeMap<String, String>) baseItem.getAnswer()).size()) {
                            addAnsweredQuestion(questionId);
                        } else {
                            removeAnsweredQuestion(questionId);
                        }
                    }
                }
            });
        }
    }, flagStateCallback);
}
Also used : LinkedTreeMap(com.google.gson.internal.LinkedTreeMap) QuizPostMultipleDropdown(com.instructure.candroid.interfaces.QuizPostMultipleDropdown) LinkHeaders(com.instructure.canvasapi2.utils.LinkHeaders) StatusCallback(com.instructure.canvasapi2.StatusCallback) QuizSubmissionQuestion(com.instructure.canvasapi2.models.QuizSubmissionQuestion) QuizSubmissionResponse(com.instructure.canvasapi2.models.QuizSubmissionResponse) Response(retrofit2.Response) QuizSubmissionQuestionResponse(com.instructure.canvasapi2.models.QuizSubmissionQuestionResponse) NonNull(android.support.annotation.NonNull) ApiType(com.instructure.canvasapi2.utils.ApiType) QuizSubmissionQuestionResponse(com.instructure.canvasapi2.models.QuizSubmissionQuestionResponse)

Example 12 with QuizSubmissionQuestion

use of com.instructure.canvasapi2.models.QuizSubmissionQuestion in project instructure-android by instructure.

the class QuizSubmissionQuestionListRecyclerAdapter method addMultipleChoiceQuestion.

private void addMultipleChoiceQuestion(QuizSubmissionQuestion baseItem, QuizMultiChoiceViewHolder holder, int position, int courseColor) {
    addAnsweredQuestion(baseItem);
    QuizMultiChoiceBinder.bind(holder, baseItem, courseColor, position, shouldLetAnswer, getContext(), embeddedWebViewCallback, webViewClientCallback, new QuizPostMultiChoice() {

        @Override
        public void postAnswer(final long questionId, long answerId) {
            addAnsweredQuestion(questionId);
            QuizManager.postQuizQuestionMultiChoice(quizSubmission, answerId, questionId, true, new StatusCallback<QuizSubmissionQuestionResponse>() {
            });
        }
    }, flagStateCallback);
}
Also used : QuizPostMultiChoice(com.instructure.candroid.interfaces.QuizPostMultiChoice) StatusCallback(com.instructure.canvasapi2.StatusCallback)

Example 13 with QuizSubmissionQuestion

use of com.instructure.canvasapi2.models.QuizSubmissionQuestion in project instructure-android by instructure.

the class QuizSubmissionQuestionListRecyclerAdapter method addEssayQuestion.

private void addEssayQuestion(QuizSubmissionQuestion baseItem, QuizEssayViewHolder holder, int position, int courseColor) {
    addAnsweredQuestion(baseItem);
    QuizEssayBinder.bind(holder, baseItem, courseColor, position, shouldLetAnswer, getContext(), flagStateCallback, embeddedWebViewCallback, webViewClientCallback, new QuizPostEssay() {

        @Override
        public void postEssay(long questionId, String answer) {
            addAnsweredQuestion(questionId);
            QuizManager.postQuizQuestionEssay(quizSubmission, answer, questionId, true, new StatusCallback<QuizSubmissionQuestionResponse>() {
            });
        }
    });
}
Also used : QuizPostEssay(com.instructure.candroid.interfaces.QuizPostEssay) StatusCallback(com.instructure.canvasapi2.StatusCallback)

Example 14 with QuizSubmissionQuestion

use of com.instructure.canvasapi2.models.QuizSubmissionQuestion in project instructure-android by instructure.

the class QuizSubmissionQuestionListRecyclerAdapter method addMatchingQuestion.

private void addMatchingQuestion(final QuizSubmissionQuestion baseItem, QuizMatchingViewHolder holder, int position, int courseColor) {
    addAnsweredQuestion(baseItem);
    QuizMatchingBinder.bind(holder, baseItem, courseColor, position, shouldLetAnswer, getContext(), embeddedWebViewCallback, webViewClientCallback, new QuizPostMatching() {

        @Override
        public void postMatching(final long questionId, HashMap<Long, Integer> answers) {
            QuizManager.postQuizQuestionMatching(quizSubmission, questionId, answers, true, new StatusCallback<QuizSubmissionQuestionResponse>() {

                @Override
                public void onResponse(@NonNull Response<QuizSubmissionQuestionResponse> response, @NonNull LinkHeaders linkHeaders, @NonNull ApiType type) {
                    if (type == ApiType.CACHE)
                        return;
                    final QuizSubmissionQuestionResponse quizSubmissionQuestionResponse = response.body();
                    if (quizSubmissionQuestionResponse.getQuizSubmissionQuestions() != null) {
                        for (QuizSubmissionQuestion question : quizSubmissionQuestionResponse.getQuizSubmissionQuestions()) {
                            if (baseItem.getId() == question.getId()) {
                                baseItem.setAnswer(question.getAnswer());
                            }
                        }
                        // make sure each answer has a match
                        int numAnswers = 0;
                        // API returns an ArrayList of LinkedTreeMaps
                        for (LinkedTreeMap<String, String> map : ((ArrayList<LinkedTreeMap<String, String>>) baseItem.getAnswer())) {
                            if (map.get(Const.QUIZ_MATCH_ID) != null && !map.get(Const.QUIZ_MATCH_ID).equals("null")) {
                                numAnswers++;
                            }
                        }
                        if (numAnswers == baseItem.getAnswers().length) {
                            addAnsweredQuestion(questionId);
                        } else {
                            removeAnsweredQuestion(questionId);
                        }
                    }
                }
            });
        }
    }, flagStateCallback);
}
Also used : QuizPostMatching(com.instructure.candroid.interfaces.QuizPostMatching) LinkedTreeMap(com.google.gson.internal.LinkedTreeMap) LinkHeaders(com.instructure.canvasapi2.utils.LinkHeaders) StatusCallback(com.instructure.canvasapi2.StatusCallback) QuizSubmissionQuestion(com.instructure.canvasapi2.models.QuizSubmissionQuestion) QuizSubmissionResponse(com.instructure.canvasapi2.models.QuizSubmissionResponse) Response(retrofit2.Response) QuizSubmissionQuestionResponse(com.instructure.canvasapi2.models.QuizSubmissionQuestionResponse) NonNull(android.support.annotation.NonNull) ApiType(com.instructure.canvasapi2.utils.ApiType) QuizSubmissionQuestionResponse(com.instructure.canvasapi2.models.QuizSubmissionQuestionResponse)

Example 15 with QuizSubmissionQuestion

use of com.instructure.canvasapi2.models.QuizSubmissionQuestion in project instructure-android by instructure.

the class QuizSubmissionQuestionListRecyclerAdapter method addNumericalQuestion.

private void addNumericalQuestion(QuizSubmissionQuestion baseItem, QuizNumericalViewHolder holder, int position, int courseColor) {
    addAnsweredQuestion(baseItem);
    QuizNumericalBinder.bind(holder, baseItem, courseColor, position, shouldLetAnswer, getContext(), flagStateCallback, embeddedWebViewCallback, webViewClientCallback, new QuizPostNumerical() {

        @Override
        public void postNumerical(long questionId, String answer) {
            addAnsweredQuestion(questionId);
            // note: this is the same as the essay question on purpose. Numerical is just text.
            QuizManager.postQuizQuestionEssay(quizSubmission, answer, questionId, true, new StatusCallback<QuizSubmissionQuestionResponse>() {
            });
        }
    });
}
Also used : QuizPostNumerical(com.instructure.candroid.interfaces.QuizPostNumerical) StatusCallback(com.instructure.canvasapi2.StatusCallback)

Aggregations

TextView (android.widget.TextView)8 QuizSubmissionAnswer (com.instructure.canvasapi2.models.QuizSubmissionAnswer)8 LayoutInflater (android.view.LayoutInflater)7 LinearLayout (android.widget.LinearLayout)7 QuizSubmissionQuestion (com.instructure.canvasapi2.models.QuizSubmissionQuestion)6 CanvasWebView (com.instructure.pandautils.views.CanvasWebView)6 ArrayList (java.util.ArrayList)6 View (android.view.View)5 LinkedTreeMap (com.google.gson.internal.LinkedTreeMap)5 StatusCallback (com.instructure.canvasapi2.StatusCallback)5 QuizSubmissionQuestionResponse (com.instructure.canvasapi2.models.QuizSubmissionQuestionResponse)5 QuizSubmissionResponse (com.instructure.canvasapi2.models.QuizSubmissionResponse)5 LinkHeaders (com.instructure.canvasapi2.utils.LinkHeaders)5 Drawable (android.graphics.drawable.Drawable)4 CheckBox (android.widget.CheckBox)4 QuizSubmissionMatch (com.instructure.canvasapi2.models.QuizSubmissionMatch)4 ApiType (com.instructure.canvasapi2.utils.ApiType)4 Activity (android.app.Activity)3 NonNull (android.support.annotation.NonNull)3 WebView (android.webkit.WebView)3