java - Android - 当事件发生在不同的类上时得到通知

标签 java android delegates

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

我正在尝试找到一种在主要 Activity 中获得通知的方法,一次

protected boolean onBalloonTap(int index, OverlayItem item) 

发生。 一切正常,关于获取点,绘制气球和弹出信息,当点击(气球)时它绘制路径。 但是我想存储选定的 POI(屏幕上有一些,我想知道用户选择了哪个),但由于它发生在不同的类上,不一定在创建时,我只是使用类似的公共(public) 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 进行反向地理编码的方法

如何向每个叠加层添加任何类型的委托(delegate)?是否可以? 我看了这个http://www.javaworld.com/javatips/jw-javatip10.html但不能完全理解这是否是我正在寻找的以及如何实现它。

提前致谢。

最佳答案

为了将另一个类发生的事情通知一个类,使用 observer design pattern , 通常称为 Listener在 Java 上,因为它们会监听应该发生的事件。

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

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

关于java - Android - 当事件发生在不同的类上时得到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11042174/

相关文章:

java - 我如何知道 ArrayList 是否包含 mongoDB 中的特定项目?

java - DATE 的 JDBC 错误格式

c# - 创建 C# Func<> 类型别名

android - 是否可以使用 OkHttp 设置占位符路径参数

ios - Swift 委托(delegate)和可选

c# - 如何获取委托(delegate)调用的结果列表?

java - 重新加载修改类时如何让jetty阻止请求?

java - 如何在 Log4j2 中使用 slf4j 的格式化消息

android - 如何杀死android中所有正在运行的应用程序?

java - 使用 WhirlyGlobe 显示 ShapeFiles