На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Hsilgos
  
> Создать свое событие
    Нужно создать событие для класса Server. То есть когда соединение устанавливается/обрывается уведомлялись те кто на него подписался.. Вообщем не знаю точно как выразить, нужно чтобы я мог написАть что-то типа такого:

    ExpandedWrap disabled
      Server server = new Server();
       
      server.setOnStateChangeListener(new OnStateChangeListener() {
        public void OnStateChange(int state) {
          // Здесь например показываем toast
        }
      });


    Перелистал кучу статей, предлагают кучу способов разных, но нигде почему-то не могу найти подходящего. То реализация не та, то используют компоненты которых почему-то у меня нет :-?

    Добавлено
    Все, разобрался. Главное - смысл понять :)

    Добавлено
    Если кому нужно, сделал так:

    В классе Server
    ExpandedWrap disabled
          public interface ServerListener {
              // Класс-Listener для сервера
              
              // Изменение состояния соединения
              abstract void onStateChange(int state);
          }
          
          // Сохраненный экземпляр листенера
          private ServerListener listener;
       
          public void setServerListener(ServerListener _listener) {
              // Установить листенер
              listener = _listener;
          }


    Там где обьявлен класс Server:
    ExpandedWrap disabled
              // События сервера
              server.setServerListener(new ServerListener() {
       
                  @Override
                  public void onStateChange(int state) {
                      switch(state) {
                      case 1:
                          Toast.makeText(getApplicationContext(), "Переподключение!", Toast.LENGTH_SHORT).show();
                          break;
                      }
                  }
                  
              });
      Цитата
      public void setServerListener(ServerListener _listener) {

      Вообще, так же можно делать списки слушателей, чтобы было не одна реализация, а сколько угодно (как в том же swing или swt):

      ExpandedWrap disabled
        List<IListener> listeners = new ArrayList<IListener>(); // предположим что ArrayList
         
        public void addActionListener(ActionListener listener){
         this.listeners.add(listener);
        }
         
        public void removeActionListener(ActionListener listener){
         this.listeners.remove(listener);
        }


      :)
        VisualProg а когда вызывается событие нужно пробежаться в цикле по всему ArrayList правильно?
          Цитата
          а когда вызывается событие нужно пробежаться в цикле по всему ArrayList правильно?

          Да, и дёргать их метод(ы).
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0656 ]   [ 14 queries used ]   [ Generated: 17.05.24, 02:20 GMT ]