繁体   English   中英

Android - 在其他类上发生事件时获得通知

[英]Android - Getting notified when event happens on a different class

我有一个应用程序,它有一个地图和一些POI。 我正在使用http://djsolid.net/blog/android---draw-a-path-array-of-points-in-mapview绘制路径。 Pin标记使用https://github.com/jgilfelt/android-mapviewballoons显示弹出气球的信息

我试图找到一种方法在主要活动中获得通知,一次

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])是使用Google API进行反向GeoCoding的方法

如何为每个叠加层添加任何类型的委托? 可能吗? 我查看了这个http://www.javaworld.com/javatips/jw-javatip10.html,但无法准确理解这是我正在寻找的以及如何实现它。

提前致谢。

为了通知一个类从另一个类发生的事情,使用观察者设计模式 ,通常在java上调用Listener ,因为它们监听应该发生的事件。

为了通知主线程从另一个线程发生的事情,最常见的方法是:

  1. Handler.post
  2. Activity.runOnUiThread
  3. View.post
  4. 的AsyncTask

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM