代码之家  ›  专栏  ›  技术社区  ›  Chris

如何清除/重置Android中的逐条数据?

  •  4
  • Chris  · 技术社区  · 14 年前

    我有一个程序,正在创建一个逐项的多佛利和一个地图。启动后一切正常。

    当您关闭并重新打开应用程序时,我使用onrestart()从我的服务器获取更新的信息并更新地图。问题是此时,itemizedOverlay仍然包含旧项,然后继续向现有数据添加新数据。

    我正在寻找一种方法来清除逐条列出的多佛利。似乎没有itemizedoverly.clear或任何类似功能。

    关于如何做到这一点的想法/为什么不明显?

    2 回复  |  直到 14 年前
        1
  •  13
  •   ddewaele    14 年前

    典型的自定义覆盖如下所示。它将地图上显示的各种覆盖项封装在一个列表中。

    public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem>{
    
        private List<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    
        public MyItemizedOverlay(Drawable defaultMarker) {
            super(boundCenterBottom(defaultMarker));        
        }
    
        @Override
        protected OverlayItem createItem(int i) {
            return mOverlays.get(i);
        }
    
        public void addOverlay(OverlayItem overlay) {
            mOverlays.add(overlay);
            populate();
        }
    
        public void removeOverlay(OverlayItem overlay) {
            mOverlays.remove(overlay);
            populate();
        }
    
    
        public void clear() {
            mOverlays.clear();
            populate();
        }
    
        @Override
        public int size() {
            return mOverlays.size();
        }
    }
    

    方法可以公开添加/删除单个覆盖项,也可以公开删除所有覆盖项(清除方法)。

    删除单个覆盖项

    MyItemizedOverlay sitesOverlay =  (MyItemizedOverlay ) map.getOverlays().get(0);
    sitesOverlay.removeOverlay(overlay);
    

    添加单个套印格式项目

    MyItemizedOverlay sitesOverlay =  (MyItemizedOverlay ) map.getOverlays().get(0);
    sitesOverlay.addOverlay(new OverlayItem(p, "title", "snippet"));
    

    删除所有覆盖项

    MyItemizedOverlay sitesOverlay =  (MyItemizedOverlay ) map.getOverlays().get(0);
    sitesOverlay.clear();
    
        2
  •  1
  •   Falmarri    14 年前

    在使用地图视图时,可以创建自己的itemizedOverlay子cass。您可以添加 clear() 方法。

    推荐文章