private List createsurveyquestion()

in Android/app/src/main/java/com/harvard/studyappmodule/activitybuilder/StepsBuilder.java [76:679]


  private List<Step> createsurveyquestion(
          Context context, ActivityObj activityobj, boolean branching, Realm realm) {
    ArrayList<Step> steps = new ArrayList<>();
    RealmList<Steps> activityQuestionStep = activityobj.getSteps();
    if (activityQuestionStep != null) {
      for (int i = 0; i < activityQuestionStep.size(); i++) {
        if (activityQuestionStep.get(i).getType().equalsIgnoreCase("question")) {
          switch (activityQuestionStep.get(i).getResultType()) {
            case "scale":
              ScaleAnswerFormat scaleFormat =
                      new ScaleAnswerFormat(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.Scale,
                              activityQuestionStep.get(i).getFormat().getStep(),
                              activityQuestionStep.get(i).getFormat().getMinValue(),
                              activityQuestionStep.get(i).getFormat().getMaxValue(),
                              activityQuestionStep.get(i).getFormat().isVertical(),
                              activityQuestionStep.get(i).getFormat().getMaxDesc(),
                              activityQuestionStep.get(i).getFormat().getMinDesc(),
                              activityQuestionStep.get(i).getFormat().getMaxImage(),
                              activityQuestionStep.get(i).getFormat().getMinImage(),
                              activityQuestionStep.get(i).getFormat().getDefaultValue());

              QuestionStepCustom scaleStep =
                      new QuestionStepCustom(
                              activityQuestionStep.get(i).getKey(),
                              context.getResources().getString(R.string.survey),
                              scaleFormat);
              scaleStep.setAnswerFormat1(scaleFormat);
              if (branching) {
                scaleStep.setStepTitle(R.string.notxt);
              }
              scaleStep.setTitle(activityQuestionStep.get(i).getTitle());
              scaleStep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              scaleStep.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(scaleStep);
              break;
            case "continuousScale":
              ContinousScaleAnswerFormat continousScaleFormat =
                      new ContinousScaleAnswerFormat(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.Scale,
                              activityQuestionStep.get(i).getFormat().getMaxFractionDigits(),
                              activityQuestionStep.get(i).getFormat().getMinValue(),
                              activityQuestionStep.get(i).getFormat().getMaxValue(),
                              activityQuestionStep.get(i).getFormat().isVertical(),
                              activityQuestionStep.get(i).getFormat().getMaxDesc(),
                              activityQuestionStep.get(i).getFormat().getMinDesc(),
                              activityQuestionStep.get(i).getFormat().getMaxImage(),
                              activityQuestionStep.get(i).getFormat().getMinImage(),
                              activityQuestionStep.get(i).getFormat().getDefaultValue());
              QuestionStepCustom continousscaleStep =
                      new QuestionStepCustom(
                              activityQuestionStep.get(i).getKey(),
                              context.getResources().getString(R.string.survey),
                              continousScaleFormat);
              continousscaleStep.setAnswerFormat1(continousScaleFormat);
              if (branching) {
                continousscaleStep.setStepTitle(R.string.notxt);
              }
              continousscaleStep.setTitle(activityQuestionStep.get(i).getTitle());
              continousscaleStep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              continousscaleStep.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(continousscaleStep);
              break;
            case "textScale":
              ChoiceTextExclusive[] textScaleChoices = new ChoiceTextExclusive[activityQuestionStep.get(i).getFormat().getTextChoices().size()];
              for (int j = 0;
                   j < activityQuestionStep.get(i).getFormat().getTextChoices().size();
                   j++) {
                textScaleChoices[j] =
                        new ChoiceTextExclusive(
                                activityQuestionStep.get(i).getFormat().getTextChoices().get(j).getText(),
                                activityQuestionStep.get(i).getFormat().getTextChoices().get(j).getValue(),
                                activityQuestionStep.get(i).getFormat().getTextChoices().get(j).getDetail(),
                                activityQuestionStep
                                        .get(i)
                                        .getFormat()
                                        .getTextChoices()
                                        .get(j)
                                        .isExclusive(),
                                null);
              }

              ScaleTextAnswerFormat scaleTextFormat =
                      new ScaleTextAnswerFormat(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.ScaleText,
                              textScaleChoices,
                              activityQuestionStep.get(i).getFormat().getDefaultValue(),
                              activityQuestionStep.get(i).getFormat().isVertical());

              QuestionStepCustom scaleTextStep =
                      new QuestionStepCustom(
                              activityQuestionStep.get(i).getKey(),
                              context.getResources().getString(R.string.survey),
                              scaleTextFormat);
              scaleTextStep.setAnswerFormat1(scaleTextFormat);
              if (branching) {
                scaleTextStep.setStepTitle(R.string.notxt);
              }
              scaleTextStep.setTitle(activityQuestionStep.get(i).getTitle());
              scaleTextStep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              scaleTextStep.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(scaleTextStep);
              break;
            case "valuePicker":
              QuestionStepCustom valuepicker =
                      new QuestionStepCustom(activityQuestionStep.get(i).getKey());
              if (branching) {
                valuepicker.setStepTitle(R.string.notxt);
              }
              Choice[] valuechoice =
                      new Choice[activityQuestionStep.get(i).getFormat().getTextChoices().size()];
              for (int j = 0;
                   j < activityQuestionStep.get(i).getFormat().getTextChoices().size();
                   j++) {
                valuechoice[j] =
                        new Choice(
                                activityQuestionStep.get(i).getFormat().getTextChoices().get(j).getText(),
                                activityQuestionStep.get(i).getFormat().getTextChoices().get(j).getValue(),
                                activityQuestionStep
                                        .get(i)
                                        .getFormat()
                                        .getTextChoices()
                                        .get(j)
                                        .getDetail());
              }
              ChoiceAnswerFormatCustom pickerformat =
                      new ChoiceAnswerFormatCustom(
                              AnswerFormatCustom.CustomAnswerStyle.valuePicker, valuepicker, valuechoice);
              valuepicker.setTitle(activityobj.getSteps().get(i).getTitle());
              valuepicker.setAnswerFormat1(pickerformat);
              valuepicker.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              valuepicker.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(valuepicker);
              break;
            case "imageChoice":
              QuestionStepCustom multichoiceStep =
                      new QuestionStepCustom(activityobj.getSteps().get(i).getKey());
              if (branching) {
                multichoiceStep.setStepTitle(R.string.notxt);
              }
              ChoiceCustomImage[] choicechoices = new ChoiceCustomImage[activityQuestionStep.get(i).getFormat().getImageChoices().size()];
              for (int j = 0;
                   j < activityQuestionStep.get(i).getFormat().getImageChoices().size();
                   j++) {
                choicechoices[j] =
                        new ChoiceCustomImage(
                                activityQuestionStep.get(i).getFormat().getImageChoices().get(j).getText(),
                                activityQuestionStep.get(i).getFormat().getImageChoices().get(j).getValue(),
                                activityQuestionStep.get(i).getFormat().getImageChoices().get(j).getImage(),
                                activityQuestionStep
                                        .get(i)
                                        .getFormat()
                                        .getImageChoices()
                                        .get(j)
                                        .getSelectedImage());
              }
              MultiChoiceImageAnswerFormat multichoiceFormat =
                      new MultiChoiceImageAnswerFormat(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.MultipleImageChoice,
                              choicechoices);
              multichoiceStep.setTitle(activityobj.getSteps().get(i).getTitle());
              multichoiceStep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              multichoiceStep.setAnswerFormat1(multichoiceFormat);
              multichoiceStep.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(multichoiceStep);
              break;
            case "textChoice":
              if (activityQuestionStep
                      .get(i)
                      .getFormat()
                      .getSelectionStyle()
                      .equalsIgnoreCase("Single")) {
                ChoiceText[] choices =
                        new ChoiceText[activityQuestionStep.get(i).getFormat().getTextChoices().size()];
                for (int j = 0;
                     j < activityQuestionStep.get(i).getFormat().getTextChoices().size();
                     j++) {
                  choices[j] =
                          new ChoiceText(
                                  activityQuestionStep.get(i).getFormat().getTextChoices().get(j).getText(),
                                  activityQuestionStep
                                          .get(i)
                                          .getFormat()
                                          .getTextChoices()
                                          .get(j)
                                          .getValue(),
                                  activityQuestionStep
                                          .get(i)
                                          .getFormat()
                                          .getTextChoices()
                                          .get(j)
                                          .getDetail(),
                                  activityQuestionStep
                                          .get(i)
                                          .getFormat()
                                          .getTextChoices()
                                          .get(j)
                                          .getOther());
                }

                QuestionStepCustom multiStep =
                        new QuestionStepCustom(activityobj.getSteps().get(i).getKey());
                if (branching) {
                  multiStep.setStepTitle(R.string.notxt);
                }
                multiStep.setTitle(activityobj.getSteps().get(i).getTitle());
                multiStep.setText(
                        activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
                SingleChoiceTextAnswerFormat choiceAnswerFormat =
                        new SingleChoiceTextAnswerFormat(
                                AnswerFormatCustom.CustomAnswerStyle.SingleTextChoice, choices);
                multiStep.setAnswerFormat1(choiceAnswerFormat);
                multiStep.setOptional(activityQuestionStep.get(i).isSkippable());
                steps.add(multiStep);
              } else {
                ChoiceTextExclusive[] choices = new ChoiceTextExclusive[activityQuestionStep.get(i).getFormat().getTextChoices().size()];
                for (int j = 0;
                     j < activityQuestionStep.get(i).getFormat().getTextChoices().size();
                     j++) {
                  choices[j] =
                          new ChoiceTextExclusive(
                                  activityQuestionStep.get(i).getFormat().getTextChoices().get(j).getText(),
                                  activityQuestionStep
                                          .get(i)
                                          .getFormat()
                                          .getTextChoices()
                                          .get(j)
                                          .getValue(),
                                  activityQuestionStep
                                          .get(i)
                                          .getFormat()
                                          .getTextChoices()
                                          .get(j)
                                          .getDetail(),
                                  activityQuestionStep
                                          .get(i)
                                          .getFormat()
                                          .getTextChoices()
                                          .get(j)
                                          .isExclusive(),
                                  activityQuestionStep
                                          .get(i)
                                          .getFormat()
                                          .getTextChoices()
                                          .get(j)
                                          .getOther());
                }

                QuestionStepCustom multiStep =
                        new QuestionStepCustom(activityobj.getSteps().get(i).getKey());
                if (branching) {
                  multiStep.setStepTitle(R.string.notxt);
                }
                multiStep.setTitle(activityobj.getSteps().get(i).getTitle());
                multiStep.setText(
                        activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
                MultiChoiceTextAnswerFormat choiceAnswerFormat =
                        new MultiChoiceTextAnswerFormat(
                                AnswerFormatCustom.CustomAnswerStyle.MultipleTextChoice, choices);
                multiStep.setAnswerFormat1(choiceAnswerFormat);
                multiStep.setOptional(activityQuestionStep.get(i).isSkippable());
                steps.add(multiStep);
              }
              break;
            case "boolean":
              QuestionStep booleanStep = new QuestionStep(activityobj.getSteps().get(i).getKey());
              if (branching) {
                booleanStep.setStepTitle(R.string.notxt);
              }
              booleanStep.setTitle(activityobj.getSteps().get(i).getTitle());
              booleanStep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              booleanStep.setAnswerFormat(
                      new BooleanAnswerFormat(
                              context.getResources().getString(R.string.yes),
                              context.getResources().getString(R.string.no)));
              booleanStep.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(booleanStep);
              break;
            case "numeric":
              ChoiceAnswerFormatCustom answerFormat;
              if (activityQuestionStep.get(i).getFormat().getStyle().equalsIgnoreCase("Integer")) {
                if (activityQuestionStep.get(i).getFormat().getMinValue() == 0
                        && activityQuestionStep.get(i).getFormat().getMaxValue() == 0) {
                  realm.beginTransaction();
                  activityQuestionStep.get(i).getFormat().setMaxValue(Integer.MAX_VALUE);
                  realm.commitTransaction();
                }
                answerFormat =
                        new IntegerUnitAnswerFormat(
                                activityQuestionStep.get(i).getFormat().getMinValue(),
                                activityQuestionStep.get(i).getFormat().getMaxValue(),
                                activityQuestionStep.get(i).getFormat().getUnit());
              } else {
                if (activityQuestionStep.get(i).getFormat().getMinValue() == 0
                        && activityQuestionStep.get(i).getFormat().getMaxValue() == 0) {
                  answerFormat =
                          new DecimalUnitAnswerFormat(
                                  activityQuestionStep.get(i).getFormat().getMinValue(),
                                  Float.MAX_VALUE,
                                  activityQuestionStep.get(i).getFormat().getUnit());
                } else {
                  answerFormat =
                          new DecimalUnitAnswerFormat(
                                  activityQuestionStep.get(i).getFormat().getMinValue(),
                                  activityQuestionStep.get(i).getFormat().getMaxValue(),
                                  activityQuestionStep.get(i).getFormat().getUnit());
                }
              }
              QuestionStepCustom numericItem =
                      new QuestionStepCustom(
                              activityobj.getSteps().get(i).getKey(),
                              activityobj.getSteps().get(i).getTitle(),
                              answerFormat);
              numericItem.setText(
                      activityobj.getSteps().get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              numericItem.setPlaceholder(activityQuestionStep.get(i).getFormat().getPlaceholder());
              if (branching) {
                numericItem.setStepTitle(R.string.notxt);
              }
              numericItem.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              numericItem.setAnswerFormat1(answerFormat);
              numericItem.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(numericItem);
              break;
            case "timeOfDay":
              QuestionStepCustom timeOfDayStep =
                      new QuestionStepCustom(
                              activityobj.getSteps().get(i).getKey(),
                              context.getResources().getString(R.string.survey));
              DateAnswerformatCustom customChoiceAnswerFormat =
                      new DateAnswerformatCustom(AnswerFormatCustom.DateAnswerStyle.TimeOfDay);
              timeOfDayStep.setAnswerFormat1(customChoiceAnswerFormat);
              if (branching) {
                timeOfDayStep.setStepTitle(R.string.notxt);
              }
              timeOfDayStep.setPlaceholder(context.getResources().getString(R.string.enter_time));
              timeOfDayStep.setTitle(activityobj.getSteps().get(i).getTitle());
              timeOfDayStep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              timeOfDayStep.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(timeOfDayStep);
              break;
            case "date":
              SimpleDateFormat simpleDateFormat = AppController.getDateFormatForApi();
              Date mindate = null;
              Date maxdate = null;
              Date defaultval = null;
              try {
                mindate =
                        simpleDateFormat.parse(activityQuestionStep.get(i).getFormat().getMinDate());
                maxdate =
                        simpleDateFormat.parse(activityQuestionStep.get(i).getFormat().getMaxDate());
                if (activityQuestionStep.get(i).getFormat().getDefaultValue() != null
                        && !activityQuestionStep
                        .get(i)
                        .getFormat()
                        .getDefaultValue()
                        .equalsIgnoreCase("")) {
                  defaultval =
                          simpleDateFormat.parse(
                                  activityQuestionStep.get(i).getFormat().getDefaultValue());
                } else {
                  defaultval = Calendar.getInstance().getTime();
                }
              } catch (Exception e) {
                Logger.log(e);
              }
              DateAnswerformatCustom dateFormat;
              if (activityQuestionStep.get(i).getFormat().getStyle().equalsIgnoreCase("Date")) {
                if (maxdate != null) {
                  Calendar calendar = Calendar.getInstance();
                  calendar.setTime(maxdate);
                  calendar.set(Calendar.HOUR, 23);
                  calendar.set(Calendar.MINUTE, 59);
                  calendar.set(Calendar.SECOND, 59);
                  maxdate = calendar.getTime();
                }
                dateFormat =
                        new DateAnswerformatCustom(
                                AnswerFormatCustom.DateAnswerStyle.Date,
                                defaultval,
                                mindate,
                                maxdate,
                                activityobj.getSteps().get(i).getFormat().getDateRange());
              } else {
                dateFormat =
                        new DateAnswerformatCustom(
                                AnswerFormatCustom.DateAnswerStyle.DateAndTime,
                                defaultval,
                                mindate,
                                maxdate,
                                activityobj.getSteps().get(i).getFormat().getDateRange());
              }
              QuestionStepCustom dateFormatItem =
                      new QuestionStepCustom(
                              activityobj.getSteps().get(i).getKey(),
                              activityobj.getSteps().get(i).getTitle(),
                              dateFormat);
              if (branching) {
                dateFormatItem.setStepTitle(R.string.notxt);
              }
              dateFormatItem.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              dateFormatItem.setAnswerFormat1(dateFormat);
              dateFormatItem.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(dateFormatItem);
              break;
            case "text":
              TextAnswerFormatRegex textAnswerFormat =
                      new TextAnswerFormatRegex(
                              activityQuestionStep.get(i).getFormat().getMaxLength(),
                              activityQuestionStep.get(i).getFormat().getValidationRegex(),
                              activityQuestionStep.get(i).getFormat().getInvalidMessage());
              textAnswerFormat.setIsMultipleLines(
                      activityQuestionStep.get(i).getFormat().isMultipleLines());
              QuestionStepCustom textstep =
                      new QuestionStepCustom(
                              activityobj.getSteps().get(i).getKey(),
                              activityobj.getSteps().get(i).getTitle(),
                              textAnswerFormat);
              if (branching) {
                textstep.setStepTitle(R.string.notxt);
              }
              textstep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              textstep.setPlaceholder(activityQuestionStep.get(i).getFormat().getPlaceholder());
              textstep.setAnswerFormat1(textAnswerFormat);
              textstep.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(textstep);
              break;
            case "email":
              EmailAnswerFormatCustom emailformat = new EmailAnswerFormatCustom(255);
              QuestionStepCustom emailstep =
                      new QuestionStepCustom(
                              activityobj.getSteps().get(i).getKey(),
                              activityobj.getSteps().get(i).getTitle(),
                              emailformat);
              emailstep.setPlaceholder(activityQuestionStep.get(i).getFormat().getPlaceholder());
              emailstep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              if (branching) {
                emailstep.setStepTitle(R.string.notxt);
              }
              emailstep.setOptional(activityQuestionStep.get(i).isSkippable());
              steps.add(emailstep);
              break;
            case "timeInterval":
              QuestionStepCustom timeIntervalStep =
                      new QuestionStepCustom(
                              activityobj.getSteps().get(i).getKey(),
                              context.getResources().getString(R.string.survey));
              TimeIntervalAnswerFormat timeIntervalAnswerFormat =
                      new TimeIntervalAnswerFormat(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.TimeInterval,
                              activityobj.getSteps().get(i).getFormat().getStep(),
                              activityobj.getSteps().get(i).getFormat().getDefaultValue());
              timeIntervalStep.setAnswerFormat1(timeIntervalAnswerFormat);
              if (branching) {
                timeIntervalStep.setStepTitle(R.string.notxt);
              }
              timeIntervalStep.setTitle(activityobj.getSteps().get(i).getTitle());
              timeIntervalStep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              timeIntervalStep.setOptional(activityobj.getSteps().get(i).isSkippable());
              steps.add(timeIntervalStep);
              break;
            case "height":
              QuestionStepCustom heightStep =
                      new QuestionStepCustom(
                              activityobj.getSteps().get(i).getKey(),
                              context.getResources().getString(R.string.survey));
              HeightAnswerFormat heightAnswerFormat =
                      new HeightAnswerFormat(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.Height,
                              activityobj.getSteps().get(i).getFormat().getPlaceholder(),
                              activityobj.getSteps().get(i).getFormat().getMeasurementSystem());
              heightStep.setAnswerFormat1(heightAnswerFormat);
              if (branching) {
                heightStep.setStepTitle(R.string.notxt);
              }
              heightStep.setTitle(activityobj.getSteps().get(i).getTitle());
              heightStep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              heightStep.setOptional(activityobj.getSteps().get(i).isSkippable());
              steps.add(heightStep);
              break;
            case "location":
              QuestionStepCustom locationStep =
                      new QuestionStepCustom(
                              activityobj.getSteps().get(i).getKey(),
                              context.getResources().getString(R.string.survey));
              LocationAnswerFormat locationAnswerFormat =
                      new LocationAnswerFormat(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.Location,
                              activityobj.getSteps().get(i).getFormat().isUseCurrentLocation());
              locationStep.setAnswerFormat1(locationAnswerFormat);
              if (branching) {
                locationStep.setStepTitle(R.string.notxt);
              }
              locationStep.setPlaceholder(
                      context.getResources().getString(R.string.enter_location));
              locationStep.setTitle(activityobj.getSteps().get(i).getTitle());
              locationStep.setText(
                      activityQuestionStep.get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              locationStep.setOptional(activityobj.getSteps().get(i).isSkippable());
              steps.add(locationStep);
              break;
            case "form":
              QuestionStepCustom formstep =
                      new QuestionStepCustom(activityobj.getSteps().get(i).getKey());
              RealmList<Steps> activityFormStep = activityobj.getSteps();
              ChoiceAnswerFormatCustom formsFormat =
                      new ChoiceAnswerFormatCustom(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.Form,
                              formstep,
                              getformquestion(context, activityFormStep, realm),
                              activityobj.getSteps().get(i).isRepeatable(),
                              activityobj.getSteps().get(i).getRepeatableText());
              formstep.setAnswerFormat1(formsFormat);
              if (branching) {
                formstep.setStepTitle(R.string.notxt);
              }
              formstep.setOptional(activityobj.getSteps().get(i).isSkippable());
              steps.add(formstep);
              break;
          }
        } else if (activityQuestionStep.get(i).getType().equalsIgnoreCase("form")) {
          QuestionStepCustom formstep =
                  new QuestionStepCustom(activityobj.getSteps().get(i).getKey());
          RealmList<Steps> activityFormStep = activityobj.getSteps().get(i).getSteps();
          ArrayList<QuestionStep> questionSteps = getformquestion(context, activityFormStep, realm);
          ChoiceAnswerFormatCustom formsFormat =
                  new ChoiceAnswerFormatCustom(
                          ChoiceAnswerFormatCustom.CustomAnswerStyle.Form,
                          formstep,
                          questionSteps,
                          activityobj.getSteps().get(i).isRepeatable(),
                          activityobj.getSteps().get(i).getRepeatableText());
          formstep.setAnswerFormat1(formsFormat);
          if (branching) {
            formstep.setStepTitle(R.string.notxt);
          }
          formstep.setOptional(activityobj.getSteps().get(i).isSkippable());
          steps.add(formstep);
        } else if (activityQuestionStep.get(i).getType().equalsIgnoreCase("instruction")) {
          InstructionStepCustom instructionStep =
              new InstructionStepCustom(
                  activityQuestionStep.get(i).getKey(),
                  activityQuestionStep.get(i).getTitle(),
                  AppController.verifyHtmlInput(activityQuestionStep.get(i).getText()));
          instructionStep.setOptional(activityQuestionStep.get(i).isSkippable());
          if (branching) {
            instructionStep.setStepTitle(R.string.notxt);
          }
          steps.add(instructionStep);
        } else if (activityQuestionStep.get(i).getType().equalsIgnoreCase("task")) {
          switch (activityQuestionStep.get(i).getResultType()) {
            case "fetalKickCounter":
              QuestionStepCustom fetalkickIntroStep =
                      new QuestionStepCustom(activityobj.getSteps().get(i).getKey() + "Intro");
              TaskIntroductionAnswerFormat taskIntroductionAnswerFormat =
                      new TaskIntroductionAnswerFormat(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.TaskIntroStep,
                              R.drawable.task_img1,
                              R.string.fetalkicktitle,
                              R.string.fetalkickdesc);
              fetalkickIntroStep.setAnswerFormat1(taskIntroductionAnswerFormat);
              fetalkickIntroStep.setOptional(false);
              steps.add(fetalkickIntroStep);

              QuestionStepCustom fetalkickInstructionStep =
                      new QuestionStepCustom(activityobj.getSteps().get(i).getKey() + "Instruction");
              TaskInstructionAnswerFormat taskInstructionAnswerFormat =
                      new TaskInstructionAnswerFormat(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.TaskinstructionStep,
                              activityobj.getSteps().get(i).getText().replaceAll("(\r\n|\n)", "<br />"));
              fetalkickInstructionStep.setAnswerFormat1(taskInstructionAnswerFormat);
              fetalkickInstructionStep.setOptional(false);
              steps.add(fetalkickInstructionStep);

              QuestionStepCustom fetalkickStep =
                      new QuestionStepCustom(activityobj.getSteps().get(i).getKey());
              TappingAnswerFormat multiFormat =
                      new TappingAnswerFormat(
                              ChoiceAnswerFormatCustom.CustomAnswerStyle.Tapping,
                              activityobj.getSteps().get(i).getFormat().getDuration(),
                              activityobj.getSteps().get(i).getFormat().getKickCount());
              fetalkickStep.setAnswerFormat1(multiFormat);
              fetalkickStep.setOptional(activityobj.getSteps().get(i).isSkippable());
              steps.add(fetalkickStep);
              break;
          }
        }
      }
    }
    return steps;
  }