我目前在了解如何正确地将ObservableMap
与MapChangeListener
链接起来方面遇到问题。
我需要创建一个通用的ObservableMap
,因为我将在视图中显示具有不同键/值类型的不同地图。
到目前为止我所做的:
地图:
public class DrawableMap<K, V> extends HashMap<K, V>, implements ObservableMap<K, V>
{
private ArrayList<MapChangeListener<K, V>> observerList = new ArrayList<>();
DrawableMap()
{
super();
}
@Override
public void addListener(MapChangeListener listener)
{
observerList.add(listener);
}
@Override
public void removeListener(MapChangeListener listener)
{
observerList.remove(listener);
}
视图:
public class View<K, V> implements MapChangeListener<K, V>
{
@Override
OnChanged(Change<? extends K, ? extends V> arg)
{
//Don't know what to put in here.
}
}
我不确定使用泛型,因此我不确定。
例如,一个视图将在面板上显示一些Shape节点。这些形状将作为键存储在地图上。但是,我很难理解如何通知观察者,一旦收到通知,请检查已进行了哪些更改以更新视图。 onChanged
什么时候被叫?
我应该在notifyOberserver()
内创建一个DrawableMap
方法吗?
像这样:
public void notifyObservers()
{
for(MapChangeListener listener : observerList)
{
//Do something
}
}
谢谢您的帮助。