如何在android列表适配器中引用片段

如何在android列表适配器中引用片段,android,google-maps,android-layout,Android,Google Maps,Android Layout,我试图将小地图添加到列表中,并创建了一个光标适配器来处理位置列表 单个位置的布局如下所示: <LinearLayout ... > <TextView android:id="@+id/start_loc" ... /> <fragment android:id="@+id/start_loc_map" android:name="com.google.android.gms.maps.MapFragme

我试图将小地图添加到列表中,并创建了一个光标适配器来处理位置列表

单个位置的布局如下所示:

<LinearLayout
    ...  >

  <TextView android:id="@+id/start_loc"
     ...
   />

  <fragment android:id="@+id/start_loc_map"
            android:name="com.google.android.gms.maps.MapFragment"
     ...
   />

</LinearLayout>
然后是:

  SupportMapFragment startLocMap = 
       (SupportMapFragment) view.findViewById(R.id.start_loc_map);
或:

这两种方法都不管用。视图(毫不奇怪)不能转换为片段,并且适配器没有可用的片段或活动。我可以获取上下文和
(活动)上下文。getFragmentManager
,但我找不到任何方法从中获取
getChildFragmentManager
。我可以得到一个FrameLayout,这就是容器对象,但我不知道如何引用其中包含的片段


如何从适配器获取布局中静态(?)片段的引用?是否得到的
不如
简单?

使用光标适配器在列表视图中显示地图需要大量工作。您将面临的另一个问题是性能下降和频繁的应用程序崩溃。在listView中直接使用mapView是一项繁重的操作。这将导致延迟,导致应用程序的用户体验迟钝。要避免这种行为,您可以使用其他方法。这将允许在列表视图中延迟加载地图,用户不必不时点击地图。如果您没有在地图上提供用户的当前位置,那么查看静态地图是最好的选择

我在下面提供一个使用此方法的小示例。首先从数据(API或DB)创建列表视图。然后将纬度和经度等数据传递给一个字符串,该字符串包含一些静态变量,定义如下

String getMapURL = "http://maps.googleapis.com/maps/api/staticmap?zoom=12&size=360x180&markers=size:mid|color:green|"  
+ JOLocation.getString("latitude") 
+ "," 
+ JOLocation.getString("longitude") 
+ "&sensor=false";
在浏览器中使用上述构造的URL时,将返回一个.PNG文件。然后,在我的活动适配器中,此方法导致在应用程序中延迟加载地图,在运行时获取显示坐标的标记,从而避免代码中的繁重工作


希望这会有帮助

谢谢你。我正在寻找一种方法来做类似的事情,但是我需要能够像您通过mapsapi那样标记地图,添加标记。这在现阶段不一定需要互动。类似帖子()中的海报建议使用“lite”(
options.liteMode(true);
)模式,这将改善预期的问题。我还没试过。另外,这取决于地点。
  SupportMapFragment startLocMap =
      (SupportMapFragment) getChildFragmentManager()
                             .findFragmentById(R.id.start_loc_map);
String getMapURL = "http://maps.googleapis.com/maps/api/staticmap?zoom=12&size=360x180&markers=size:mid|color:green|"  
+ JOLocation.getString("latitude") 
+ "," 
+ JOLocation.getString("longitude") 
+ "&sensor=false";