Преобразовать большой переключатель в хэш (или другую рекомендацию) - PullRequest
0 голосов
/ 11 октября 2011

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

IЯ относительно новичок в Java и в настоящее время использую большие операторы Switch () в моем коде.По сути, он получает текущее время телефона и сравнивает его со всем временем в расписании, в котором он отображает следующие два времени отправления, а затем вычисляет разницу между текущим временем и временем отправления.

Я уверен, что оператор switch не лучшая идея для целей скорости, а также для изменения кода.Например, если один раз изменить его, нужно добавить несколько строк кода и исправить это одноразовое изменение.Кроме того, если весь график меняется, каждый должен обновить свое приложение, чтобы изменение времени вступило в силу.Моя идеальная ситуация - хранить где-то на моем веб-сервере файл, который можно было бы загрузить и вставить в хэш-карту (я думаю, что это правильный термин), который загружал бы новое расписание, если было изменение времени.

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

Ниже приведен скриншот приложения, поэтому вы можетепонять это, если мой пост не был понятным.Заранее спасибо.

Скриншот:

screenshot

Ответы [ 2 ]

1 голос
/ 11 октября 2011

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

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

Детали этого?Во-первых, понимают ресурсы в Android.Если обновленное расписание не существует, используйте ресурс по умолчанию.

Во-вторых, используйте запрос заголовка HTTP, чтобы проверить, существует ли более новый файл.Если это так, проанализируйте, загрузите и сохраните состояние. Сохранение состояния активности Android с помощью Save Instance State .

Наконец, XML удобен для распространения данных, даже если он не быстрый.Все это понимают, и их легко обновить или передать.

<ferry location=0 time=2045>
    <day>1</day>
    <day>2</day>
    <day>3</day>
    <day>4</day>
    <day>5</day>
</ferry>

<ferry location=0 time=0800>
    <day>6</day>
</ferry>
0 голосов
/ 11 октября 2011

Вам понадобится что-то вроде базы данных для хранения данных расписания.Это поможет вам отделить код от данных.Я не знаком с Android, но думаю, что на устройстве есть интерфейс для базы данных sqlite.

Кроме того, поскольку это приложение на небольшом устройстве, вы можете подключиться к базе данных расписания на сервере черезинтернет-соединение.Таким образом, вы должны поддерживать данные расписания только в одном месте (на сервере), и клиенты будут использовать всегда актуальные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...