Обновить команду CodenameOne sidemenu при изменении значения свойства - PullRequest
0 голосов
/ 17 октября 2018

Я хочу иметь возможность изменять заголовок моей команды меню Side в зависимости от размера ListProperty, который динамически обновляется.Я пытался сделать это через changeListener, но я не могу заставить это работать.

Command cmdWishlist = tb.addMaterialCommandToRightSideMenu("Wishlist(" + Shop.getInstance().wishList.size() + ")", FontImage.MATERIAL_FAVORITE, e -> {
        ....
    });
    Shop.getInstance().wishList.addChangeListener(pl -> {
        tb.revalidate();
    });

Если, однако, я открываю другую форму и проверяю боковое меню, изменения, которые мне нужны, отражают.Как я могу заставить это работать?Кстати, я получаю желаемое поведение, если помещаю, скажем, ярлык на панели инструментов и setText("Wishlist(" + Shop.getInstance().wishList.size() + ") в прослушивателе изменений.

Пожалуйста, укажите мне правильное направление

1 Ответ

0 голосов
/ 18 октября 2018

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

Button ui = tb.findCommandComponent(cmd);
ui.setText(newLabelForCommand);
...