Библиотеки с открытым исходным кодом играют важную роль в разработке программного обеспечения. Интегрируя интересные функции из той или иной библиотеки, вы можете улучшить свое приложение и сделать его более продвинутым. Если ваше приложение предполагает работу с таблицами, значениями и символами, можно воспользоваться готовой библиотекой, которая позволит работать с CSV-файлами.


CSV-файл — это текстовый файл, в котором хранится информация в табличном виде, а поля этой таблицы разделяются специальными символами — разделителями. Вот почему этот файл называется Comma Separated Values — значения, разделённые запятыми. Образно говоря, CSV библиотека — это своего рода контейнер для хранения различных функций для работы с CSV-файлами.


Мы хотели бы обратить ваше внимание на следующее тематическое исследование, которое объяснит, как мы в Cleveroad создали нашу собственную CSV библиотеку AdaptiveTableLayout для Android, как ее использовать и почему она лучше, чем ее аналоги.


Почему CSV?


Конечно, вы можете сказать, что вас не удивит разработка ни еще одного CSV-ридера для мобильной платформы, ни соответствующей библиотеки. Но есть одна маленькая деталь, которая отличает его от других. Доступные CSV-редакторы и CSV-ридеры предоставляют практически все необходимые функции, кроме одной — функции управления, которая позволила бы пользователям динамически указывать количество столбцов и строк. Это делает процесс работы с CSV-файлами медленным и менее удобным. Потому мы решили исправить это, следствием чего и появилось наше решение.


Мы создали CSV библиотеку, функции которой каждый пользователь может применить в своем программном обеспечении. Кроме того, мы разработали CSV-ридер, как демонстрацию практического применения библиотеки AdaptiveTableLayout.


Конечно, это не трендовое программное обеспечение, которое будет популярно среди пользователей Android. Но если вы работаете с большим массивом информации, эта библиотека может быть очень полезна при разработке программного обеспечения.


Исследования рынка


Мы начали исследование рынка для того, чтобы изучить другие доступные CSV-ридеры для Android, проверяя их функции и возможности. Давайте рассмотрим некоторые аналоги для наглядной демонстрации того, что привело нас к созданию своего решения.


CSV Viewer


Данный CSV Viewer позволяет редактировать CSV-файлы, а также работать с импортом и экспортом телефонных контактов.


Слабые стороны


У него отсутствует функция динамического нумерации. Кроме того, внутри приложения встроена реклама, что может раздражать, когда ты работаешь с документом. И в отличии от нашего CSV-ридера и библиотеки, он не позволяет делать диагональные прокрутки и исправлять заголовки.


Lightweight CSV Viewer


В этом CSV Reader есть функция сортировки отображаемых данных, несколько разделителей и отображение номера строки.


Слабые стороны


Во-первых, он также содержит рекламу, а во-вторых у него нет функции перетаскивания, когда вы можете перемещать все строки и столбцы в таблице. В отличии от других перечисленных CSV-ридеров, наш может похвастаться такой функцией.


Easy CSV Reader


И последний из примеров — это CSV app. Это очень простое приложение, которое предназначено только для чтения CSV-файлов.


Слабые стороны


Как мы отметили, это простое приложение, функцией которого является только чтение CSV-файлов. Оно не имеет ни функции редактирования, ни каких-либо других функций, таких как прокрутка, изменение поля ячеек, перетаскивание файлов и т.д. Этот ридер может понадобиться только в случае, если вам нужно создать обычную CSV-таблицу.


Вдобавок к вышесказанному, мы хотели бы указать на еще одну особенность, которой не хватает CSV Viewer и CSV Reader, — они не могут быстро работать с большими файлами. Но наша библиотека позволяет это делать.


Проведя исследование рынка, мы проанализировали существующие решения для Android и сделали соответствующие выводы. Мы изменили дизайн нашего CSV-ридера, чтобы сделать его уникальным, создали библиотеку с открытым исходным кодом, чтобы позволить всем желающим интегрировать ее в свое программное обеспечение и выпустили ее в свободном доступе для бесплатной загрузки без рекламы.


Этапы разработки AdaptiveTableLayout


А сейчас мы бы хотели подробно рассказать, как мы создавали нашу библиотеку.


Во-первых, наши Android-разработчики применили технологию RecyclerView, которая использовалась для интеграции функций прокрутки. Затем был создан прототип будущего приложения, чтобы проверить как оно будет выглядеть. Данный этап также включал функциональное тестирование и проверку всех методов работы с библиотекой. Сделав это, разработчики приступили к интеграции новых функций в приложение, чтобы сделать его кастомизированным и уникальным.




Библиотека была создана с использованием встроенного Android SDK и API 16 уровня.


Оптимизация и составление документации


Разработчики привели CSV-ридер в порядок, представив его вместе с соответствующей документацией и подробным описанием работы приложения и использования библиотеки. После чего мы еще раз протестировали нашу библиотеку и исправили найденные ошибки.


Сейчас приложение CSV Reader доступно на Google Play Store, а библиотека AdaptiveTableLayout на GitHub.


Функции AdaptiveTableLayout


Итак, какими функциями может похвастаться наша библиотека:


  • Чтение и редактирование CSV-файлов
  • Изменение положения строк и столбцов
  • Диагональная прокрутка
  • Фиксирование заголовков по краям
  • Изменение поля ячейки
  • Работа с большими файлами без задержек
  • Перетаскивание строк и столбцов



Помимо этого, библиотека содержит два адаптера данных:


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


Второй — LinkedAdaptiveTableAdapter использует матрицу с измененными элементами и ссылками на них. Он может работать с большим объемом данных. Исходные данные не могут быть изменены.


Перед использованием адаптеров, упомянутых выше, вам необходимо знать точную ширину и высоту строк и столбцов, а также их количество.


Преимущества AdaptiveTableLayout


Ни в одной другой библиотеке вы не найдете тех же функций, что и в AdaptiveTableLayout, где вы можете сделать следующее:


  • Диагональную прокрутку
  • Использовать функцию перетаскивания для изменения строк / столбцов
  • Фиксировать длину заголовка
  • Порядковый номер строки меняется при перемещении строки вверх/вниз.



Основные проблемы, которые нам пришлось преодолеть


Иногда в разработке приложений могут возникнуть свои нюансы, которые мешают двигаться дальше. Но мы никогда не опускаем рук и справляемся с возникшими препятствиями. Мы хотим поделиться проблемами, которые нам пришлось решать во время разработки приложения.


  • Интеграция функции прокрутки. Другие CSV библиотеки предоставляют только прокрутку вверх и вниз или слева направо. Поэтому разработчики решили интегрировать функцию диагональной прокрутки. Это было нелегкой задачей, так как они хотели сделать это на основе RecyclerView. Прежде, чем это удалось, потребовалось некоторое время, но код выглядел ужасно. Вследствие чего они пришли к выводу, что лучше всего управлять этим вручную и удалить из библиотеки RecyclerView вообще, и использовать его в CSV Reader.
  • Расчет позиций элементов. Было необходимо точно рассчитать где будет расположен каждый элемент. Сложность процесса заключалась в большом количестве расчетов, которые нужно было выполнять программистам.
  • Проблемы с разработкой адаптеров. Потребовалось много времени, чтобы создать адаптер, который будет кэшировать все изменения с перетаскиваниями. Что упростило работу с большими CSV-файлами.
  • Перемещение строк / столбцов. Это не было большой проблемой, но тоже потребовалось время для оптимальной и удобной реализации этой функции.

Кроме того, в будущем мы планируем добавить функцию «сужения/растягивания» и масштабирования. А также добавить функцию написания справа налево для людей из стран Ближнего Востока.


В общем, еще предстоит немало работы, чтобы функционал библиотеки отвечал всем нашим требованиям и требованиям других пользователей. Надеемся, у вас будет возможность попробовать ее в действии. Ждем вашего фидбека и предложений.

Комментарии (0)