@Override
 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
   NotificationPreset preset = NotificationPresets.PRESETS[position];
   mBackgroundPickers.generatePickers(preset.countBackgroundPickersRequired());
   updateTextEditors(preset);
   updateNotifications(false /* cancelExisting */);
 }
  /** Post the sample notification(s) using current options. */
  private void postNotifications() {
    sendBroadcast(
        new Intent(NotificationIntentReceiver.ACTION_ENABLE_MESSAGES)
            .setClass(this, NotificationIntentReceiver.class));

    NotificationPreset preset =
        NotificationPresets.PRESETS[mPresetSpinner.getSelectedItemPosition()];
    CharSequence titlePreset = mTitleEditText.getText();
    CharSequence textPreset = mTextEditText.getText();
    PriorityPreset priorityPreset =
        PriorityPresets.PRESETS[mPrioritySpinner.getSelectedItemPosition()];
    ActionsPreset actionsPreset = ActionsPresets.PRESETS[mActionsSpinner.getSelectedItemPosition()];
    if (preset.actionsRequired() && actionsPreset == ActionsPresets.NO_ACTIONS_PRESET) {
      // If actions are required, but the no-actions preset was selected, change presets.
      actionsPreset = ActionsPresets.SINGLE_ACTION_PRESET;
      mActionsSpinner.setSelection(
          Arrays.asList(ActionsPresets.PRESETS).indexOf(actionsPreset), true);
    }
    NotificationPreset.BuildOptions options =
        new NotificationPreset.BuildOptions(
            titlePreset,
            textPreset,
            priorityPreset,
            actionsPreset,
            mIncludeLargeIconCheckbox.isChecked(),
            mLocalOnlyCheckbox.isChecked(),
            mIncludeContentIntentCheckbox.isChecked(),
            mVibrateCheckbox.isChecked(),
            mBackgroundPickers.getRes());
    Notification[] notifications = preset.buildNotifications(this, options);

    // Post new notifications
    for (int i = 0; i < notifications.length; i++) {
      NotificationManagerCompat.from(this).notify(i, notifications[i]);
    }
    // Cancel any that are beyond the current count.
    for (int i = notifications.length; i < postedNotificationCount; i++) {
      NotificationManagerCompat.from(this).cancel(i);
    }
    postedNotificationCount = notifications.length;
  }