Min / Max Combobox динамическая функциональность - PullRequest
0 голосов
/ 03 июля 2019

Разработка Java SWT-приложения.

2 комбинированных списка.Один мин , один макс , применительно к числу спален для дома.

Мин. имеет записи в порядке: (Мин., 1, 2, 3, 4, 5, 6)

Макс имеет записи в следующем порядке: (не макс. 1, 2, 3, 4, 5, 6)

Если пользователь изменяет min , чтобы показать 3 спальни, комбинированный список max должен обновиться, чтобы показать (Нет макс. 3, 4, 5, 6) без изменения выбранногов макс. .

TLDR: дублирование минимальной / максимальной функциональности Redfin (redfin.com) для спален.

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

Существуют ли "двойные" библиотеки "min / max" со списком?Я не могу найти ничего похожего на то, что я описываю.Если нет, то каково четкое, элегантное решение этой проблемы?

До сих пор я фокусируюсь на одном комбинированном ящике за раз, но это может быть обобщено?:

void UpdateMaxBeds(int index, String text) //index and text of what was selected in min
    {

        for (int i = 1 ; i <= 6;i++)
        {
            Integer curr = Integer.getInteger(max_beds.getItem(i));
            if(curr<index)
            {
                max_beds.remove(i);
            }
        }
    }

1 Ответ

0 голосов
/ 03 июля 2019

Попробуйте добавить i-- при удалении и использовании < max_list.size() вместо жестко заданного <= 6, например, так:

void UpdateMaxBeds(int index, String text) //index and text of what was selected in min
{
    for (int i = 1; i < max_beds.size(); i++)
    {
        Integer curr = Integer.getInteger(max_beds.getItem(i));
        if(curr<index)
        {
            max_beds.remove(i);
            i--;
        }
    }
}

i-- удерживает вас от пропуска элемента после удаленного наследующий для итерации цикла.max_list.size() удерживает вас от попыток доступа и удаления элементов за пределами границ, поскольку удаление изменяет размер списка (при условии, что список).

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

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