属性值更改时更新CodenameOne sidemenu命令

时间:2018-10-17 14:19:57

标签: codenameone

我希望能够根据动态更新的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 :(得分:1)

当我们在侧面菜单或按钮中添加命令时,我们提取其值,但不会自动反映更新,因为通过将命令绑定到组件可能导致潜在的内存泄漏。解决方法是也修改原始基础组件,例如:

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