android - 是否可以在 MapActivity 中使用 Loaders 类?

标签 android

我有一个 Android 应用程序可以定期记录位置并在后台存储在数据库中。 db 带有内容提供程序。使用报警接收器和服务设置重复记录任务。

现在我想使用数据库中的数据(纬度和经度)将图钉放在 map 上。我目前使用 Loader 加载游标并从 db 读取数据,然后将它们放入 fragment activity 的 ListView 中(使用 2.3.3 平台中的支持包 v13)。但是我想不出一种方法来将其转换为在 map Activity 中的 map View 上绘图。如果我的 Activity 扩展 MapActivity,我无法使用方法 getSupporLoaderManager().iniLoader(...) 初始化加载程序,因为它提示错误。

我想保留加载程序,因为如果数据量很大,它似乎处理得更快。我的问题是,如何使用 MapActivity 中的 Loader 类读取数据?如果不可能,有什么更好的读取数据和在 map 上绘制的方法?

任何建议或回答表示赞赏。

最佳答案

这应该是可能的!我假设您可以在 MapActivity 中加载数据列表,因此让我们调用 Marker 以供进一步引用。只需要一个 drawable 来表示它们并扩展 ItemizedOverlay

public class MarkerOverlay extends ItemizedOverlay<OverlayItem>{

  Collection<Marker> mMarkers;

  public MarkerOverlay(Drawable drawable, Collection<Marker> markers){
    super(drawable);
    mMarkers = marker;
  }

  @Override
  public OverlayItem createItem(int index){
    Marker m = mMarkers.get(index);
    return new OverlayItem(new GeoPoint(m.getLatitude(), m.getLongitude()),
                           m.getTitle(), m.getSnippet();
  }

  @Override
  public int size(){
    return mMarkers.size();
  }

}

在您的 MapActivity 中,您可以这样做:

MarkerOverlay mMarkerOverlay;

public void onCreate(Bundle icicle){
  super(icicle);
  ArrayList<Marker> list = Cursor.getList(); //fetch your data from Cursor
  mMarkerOverlay = new MarkerOverlay(getResources().getDrawable(
                               R.drawable.some_marker_drawable),
                               list);
  getOverlays().add(mMarkerOverlay); 

}

您还可以为每个标记创建一个独特的可绘制对象。只需在返回之前在 createItem 中设置它

关于android - 是否可以在 MapActivity 中使用 Loaders 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11128801/

相关文章:

java - 如何从 ListView 中选择特定文件

Android - 使用 MPAndroidChart 在两条线之间填充不同的颜色

android - Activity 与选项菜单崩溃

android - 复合 XML 形状

android - 没有互联网连接时,Google API 客户端连接方法会卡住 UI

java - 从模块调用MainActivity

android - 无法解析 google 身份验证依赖项

安卓dexguard : Multiple problems have occured?

java - 调用 initLoader() 后 Loader 不启动?

java - 如何调用服务类中的 Activity 方法?