Связать универсальные ObservableMap и MapChangeListener - PullRequest
0 голосов
/ 12 сентября 2018

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

Спасибо, что помогли мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...