Я также обновил Andriod Studio до версии 3.3 и столкнулся с этой проблемой. Сначала я подумал, что мне нужно понизить версию Studio, затем я увидел значок I EYE и пометил Show Layout Decorations . См. Ниже
Существуют сложные решения и легкие решения. Два самых легких решения:
Разветвитесь повторяющиеся события некоторое постоянное количество экземпляров или некоторый фиксированный диапазон дат в будущем. Снабдите FK recurrence_id каждым экземпляром, который указывает на описание повторения и допускает массовое редактирование и отмену.
Преимущество pre-calced разветвляется, подход - это, делает очень очень легким реализовать исключения повторения, которые почти наверняка будут первым запросом новых функций, который Вы получаете.
Вычислите во время дисплея. Компьютеры быстры, в зависимости от вопросов, на которые Вы хотите смочь ответить о Ваших данных, часто будет тривиально легко вычислить все случаи в диапазоне дат. Можно быть умными и попытаться быстро заключить в скобки диапазон дат прежде, чем сделать вычисление повторения, или Вы можете скот вынуждать его покинуть дату начала.
Кроме того Вам просто нужно решение для хранения правила повторения, что работы с тем, что Вы используете для вычисления повторений. (например, если Вы используете iCalendar, включают библиотеку, Ваша схема является varchar (255) со значениями RRULE в ней),
Если Вы имеете к калькулятору повторения самокрутки, и Вы хотите сохранить его простым, ограничивая Ваши повторения ежедневной газетой, еженедельно, ежемесячно, или ежегодные покрытия Ваш первый 80%-й вариант использования, и тривиально легко к calc.
На которую точку Ваша потенциальная схема повторения смотрит что-то как:
id
recurrence_start
recurrence_end
type (daily|weekly|monthly|yearly)
day_of_week (for weekly)
month
day_of_month
И откровенно сложные решения, вероятно, не стоят того :)
Попробуйте проект с открытым исходным кодом, который имеет функциональность планирования?
Некоторый интерфейс/определения планирования
http://tools.ietf.org/html/rfc4791
и
Это походит на "повторяющееся событие" такой как в Outlook. Я использовал бы одну таблицу под названием RecurrenceType для хранения каждого периода времени (ежедневно, еженедельно, и т.д.), другая таблица под названием Событие woud относится ключом к RecurrenceType. Будущие даты большинства типов повторения могут затем быть вычислены с помощью стандартных функций Даты.
Martin Fowler написал действительно большую работу об этом. Можно найти много тех же идей, которые он обсуждает в карлике, библиотеке Ruby для контакта с временными выражениями.
Проблема состоит в том, что существуют бесконечные возможности для определения такого интервала. Например - "Первый понедельник через месяц, если дата даже, но не 4, и месяц не является февралем долгого года". Как далеко Вы готовы пойти? В конечном счете необходимо будет просто заставить пользователей ввести в булевом выражении, которое оценивает к TRUE в дни, что событие должно повториться. Не очень хороший с точки зрения UI.
Необходимо выбрать некоторые ограничения для системы. После того как Вы знаете их, остальные должны быть легкими - или по крайней мере соответствующими на ТАК.:)