如何在Codename One中触发属性更改侦听器

你好,世界

我正在尝试更新地图上的用户位置。因此,我将LocationListener定义如下:

public class UserLocationListener implements LocationListener {

  @Override
  public void locationUpdated(Location location) {
    User.getInstance().actualLocation.set(location);

  }

  @Override
  public void providerStateChanged(int newState) {

 }

}

actualLocation是一个属性定义以下的属性CN1指南

在模拟器中,如果我使用位置模拟器移动用户位置,则会触发locationUpdated。

现在在我的MainForm类构造函数中,如果我添加:

User.getInstance().actualLocation.addChangeListener((p) -> {
        System.err.println("User location has changed");
        // Update user location on the map
}

尽管地图显示有标记,但它从未被触发(请参阅参考资料myMap.addMarker(...))。

所以我的问题是:为什么不触发此变更侦听器,我应该在哪里放置它以使所有工作正常进行?

任何帮助表示赞赏,

Shai Almog

位置代码重用相同的位置对象实例,只是在其中更改值。set(T)如果新值!=是旧值,则property中方法仅会引发更改事件

public K set(T value) {
    if(this.value != value) { 
        this.value = value;
        firePropertyChanged();
    }
    if(parent == null) {
        // allows properties to work even if they aren't registered in the index
        return null;
    }
    return (K)parent.parent;
}

因此,可以使用以下方法作为变通方法:

public void locationUpdated(Location location) {
  Location l = new Location();
  l.setLatitude(location.getLatitude());
  ... // etc. sucks that we don't have new Location(location)
  User.getInstance().actualLocation.set(l);
}

我不确定我们是否需要它是错误的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Linux中创建文件侦听器?

如何在Spring JMS侦听器中从JMS消息获取自定义属性

如何在ListView上设置一个侦听器,以便在列表数据发生更改时触发?

如何在XML中实现OnTouch侦听器

如何在Codename One中控制/缩放图像大小?

如何在Codename One中更改SpanLabel的字体?

如何在Codename One中读取流的行

如何设置滑块更改侦听器仅在JavaFX中释放鼠标拖动时才触发?

如何在Kotlin中为变量设置侦听器

Provider中的侦听器如何在Flutter中工作?

如何使用值更改侦听器更改JSF页面中的语言环境?

使用Jasmine测试$ emit时如何触发$ emit在控制器中测试$ on侦听器?

如何在<head>中的脚本标记中触发事件侦听器

如何处理Property <T>,更改侦听器和属性的初始化?

如何拒绝onSharedPreferenceChanged()侦听器中的更改

如何在RadioButton中设置侦听器-Android

如何在Codename One中重建表单组件

如何在侦听器中识别属性自定义类型?

在Picasso库中,现在如何在我的图像加载时触发哪个事件侦听器?

如何在Polymer中的自定义元素属性中添加事件侦听器?

如何在Codename One中更改SVG的背景

如何在 Codename One 中暂停启动画面?

如何在 Eclipse 中设置 Codename One?

即使 oldVaule 和 newValue 相同,如何使 JavaFX 属性侦听器触发事件?

从侦听器调用时如何更改 Unity 中的场景?

如何通过其已更改的事件侦听器设置复选框的选中属性

当其他子控制器更改该范围属性时,如何在另一个控制器中为父范围的范围属性调用监视侦听器

如何触发对服务器的侦听器

反应。如何在创建的侦听器中删除事件侦听器?