Работа с массивом двумерных массивов данных в мобильном приложении СБРС

"Вот, какой смысл умываться по утрам? Чтобы быть бодрым? А какой смысл быть по утрам бодрым? Какой вообще смысл БЫТЬ по утрам? Непонятно. И непонятно, то ли жизнь всегда была бессмысленной, а ты просто не замечал этого, то ли смысл был, но куда-то затерялся." - Бараш

Актуальность решения данной проблемы в контексте курса Научно-исследовательского семинара в магистратуре ФИИТ обуславливается необходимостью нахождения технической реализации решения данной проблемы для внедрения в выпускную-квалификационную работу магистра, которая является развитием идей  выпускную-квалификационной работы бакалавра. В частности, в последней стал вопрос не только вывода на экран ряда двумерных массивов данных СБРС, но и предоставление возможности их редактирования, без которого полезность ВКРб значительно снижается. Поскольку в рамках ВКРб данный вопрос полноценно решить не удалось, он перетёк в ВКРм. Кроме вышеописанного, имеет место ограничение по используемым элементами интерфейса, накладываемые фреймворком Xamarin Forms.

Решение для интерфейса студента

По итогам прошлого этапа изысканий, наиболее подходящим решением для отображения оценок студента, т.е. списка массивов данных было определено… лучше бы про Хакинтош написал… применение ListView с кастомными хедерами и футерами, которые позволяют отобразить сводную информацию и итог, и кастомным шаблоном элемента массива, который в себе содержит Grid, и их группировкой по модулям, каждый из которых имеет кастомный заголовок.

 

Решение для интерфейса преподавателя

Несмотря на успех в реализации задачи предыдущего этапа, остается вопрос модификации данного решения для применения к данным преподавателя для отображения ряда двумерных массивов данных СБРС с возможностью их редактирования. Для данной задачи, в результате изучения имеющихся возможнстей и работы в рамках курса “UI/UX-дизайн” было найдено решение.


Первым уровнем решения, как и в случае с данными студента, является ListView списка дисциплин, где происходит группировка УКД по дисциплине,с кастомными заголовками групп и элементами. На втором уровне - применение нескольких ListView, находящихся внутри StackLayout и навигационной обертки TabbedPage, внутри которых задаётся кастомный вид элемента и источник данных со списком элементов и заданными заголовками и футерами. Внешняя обёртка TabbedPage обуславливается необходимостью переключения между двумя наборами данных в рамках одной дисциплины - баллы и посещения. StackLayout используется как базовый макет, не требующий задания абсолютного положения и использующий незначительное количество ресурсов. Самым нагруженным является ListView, который реализует возможности пролистывания ScrollView, для него определены заголовок, шаблон элемента и футер. В них используется Grid для расположения элементов блока в необходимой структуре. Особенностью здесь является использование двух новых элементов интерфейса - Picker и Entry.

Picker — это элемент управления для выбора текстового элемента из списка данных. При его нажатии выпадает короткий список элементов, из которого пользователь может выбрать один.

Entry — элемент управления для редактирования одной строки текста.

 

Picker находится вверху StackLayout и используется для выбора контрольного мероприятия, по которому будет происходить оценивание, или занятия, по которому будет проставляться посещаемость. Entry, в свою очередь, интегрирован в шаблон элемента списка и является полем ввода баллов с отправкой на сервер по событию.

 

Поиск по спискам

Кроме того, изыскание выявили необходимость добавления возможности поиска по спискам, представляемым в интерфейсе приложения для преподавателя, будь то список предметов, студентов, контрольных мероприятий или занятий. Эта возможность существенно сэкономит время на поиск необходимого пункта. Xamarin Forms предоставляет два встроенных варианта внедрения данного функционала - Shell.SearchHandler и SearchBar.

 

SearchHandler - встроенные функции поиска, предоставляемые оболочкой Xamarin.Forms. Возможность поиска можно добавить на страницу, задав Shell.SearchHandler свойство SearchHandler объекта. После этого в верхней части страницы появится поле поиска.

SearchBar - это пользовательский элемент управления ввода, используемый для инициации поиска. Элемент управления SearchBar поддерживает замещающий текст, ввод запроса, выполнение поиска и отмену.

 

Shell.SearchHandler

SearchBar

Принимая решение о выборе элемента интерфейса, стоит помнить о том, что Shell.SearchHandler является частью Оболочки (Shell) - особого типа приложений Xamarin Forms, который отличается навигацией через боковое меню, созданного Microsoft в 2019, когда Google убирает боковое меню из гайдлайнов, iOS не принимала их никогда, а поддержка UWP в Shell так и не стала полноценной. Кроме того, использование такого элемента вынудит выполнить перенос всего приложения на эту концепцию. В связи с чем, становится очевидным выбор в пользу SearchBar.