2012-06-14 3 views
1

У меня есть приложение, на котором есть карта и некоторые POI. Я использую http://djsolid.net/blog/android---draw-a-path-array-of-points-in-mapview для рисования пути. маркеры Pin используют https://github.com/jgilfelt/android-mapviewballoons, чтобы отобразить всплывающее шар с информациейAndroid - Уведомление о событии, когда событие происходит в другом классе

Я пытаюсь найти способ, чтобы получить уведомление в основной деятельности, когда

protected boolean onBalloonTap(int index, OverlayItem item) 

происходит. Все работает, касаясь получения очков, рисования воздушных шаров и всплывающих подсказок, и при нажатии (на воздушном шаре) он рисует путь. однако я хочу сохранить выбранную POI (есть некоторые на экране, я хочу знать, какой пользователь выбрал), но поскольку это происходит на разных классах, не обязательно при создании, я просто использую публичный getter чего-то вроде что. код для создания пометок является:

Drawable marker = getResources().getDrawable(R.drawable.malls); 
    PinsOverlay malls= new PinsOverlay(marker, mapView); 
    List<Overlay> mapOverlays= mapView.getOverlays(); 
    for (int i = 0; i < coordinates.length; i++) { 
     long systemTime = Long.valueOf(currentTime); 
     long timeSinceReported = (systemTime - Long.valueOf(time[i]))/60; 
     OverlayItem spot = new OverlayItem(coordinates[i], getAddressFromGP(coordinates[i]), getResources() 
       .getString(R.string.timeSinceReported) 
       + String.valueOf(timeSinceReported) 
       + " " 
       + getResources().getString(R.string.minutes)); 
     malls.addOverlay(spot); 
    } 
    mapOverlays.add(malls); 

где coordinates[i] является массив держит все координаты маркеров, и getAddressFromGP(coordinates[i]) является метод обратного GeoCoding с помощью Google API

Как я могу добавить какой-либо делегировать каждого наложения? Является ли это возможным? Я посмотрел на это http://www.javaworld.com/javatips/jw-javatip10.html, но не мог точно понять, что это то, что я ищу и как его реализовать.

Заранее спасибо.

ответ

3

, чтобы уведомить класс о том, что произошло из другого класса, используйте observer design pattern, который часто называется Listener на java, поскольку они прослушивают событие, которое должно произойти.

, чтобы уведомить основной поток чего-то, что произошло из другого потока, наиболее распространенными способами являются:

  1. Handler.post
  2. Activity.runOnUiThread
  3. View.post
  4. AsyncTask
+0

Спасибо, я подумал, что будет подходящее время, чтобы посмотреть в обработчик s, Если я правильно понимаю, класс, отправляющий сообщение, должен расширять класс Handler. Что делать, если мой класс уже расширяет класс? Что я могу сделать, чем? какой предпочтительный метод? –

+0

Я вижу, что то же самое касается AsyncTask. Возможно ли создать внутренний класс внутри класса Balloon, который будет выполнять такую ​​вещь, а затем сообщать об основной деятельности? –

+0

Решено, используя обработчик. Большое спасибо! –

Смежные вопросы