【问题标题】:Update CodenameOne sidemenu command when a property value changes属性值更改时更新 CodenameOne sidemenu 命令
【发布时间】:2018-10-18 12:16:37
【问题描述】:

我希望能够根据动态更新的 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() + "),我就会得到所需的行为。

请指点我正确的方向

【问题讨论】:

    标签: codenameone


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 2017-06-29
      • 2019-11-25
      相关资源
      最近更新 更多