В настоящее время у меня возникают проблемы, чтобы понять, как правильно связать 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
}
}
Спасибо, что помогли мне.