6
我有一個listView的活動,其中每個項目可以展開時點擊,顯示一個mapView。如果另一個項目被點擊,則打開的項目被關閉。 活動延伸MapActivity,並且只有一個MapView類的實例,這是我刪除和添加到需要這樣的項目:MapView中listView項目
private MapView getMapView() {
if (mMapView == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mMapView = (MapView) inflater.inflate(R.layout.club_map,null);
}
else
{
((ViewGroup) mMapView.getParent()).removeView(mMapView);
}
return mMapView;
}
private void attachMap(View targetView,String siteID) {
if (openInPrgrs) {
return;
}
RelativeLayout relView = (RelativeLayout) targetView.findViewById(R.id.clubDetailsLayout);
LinearLayout mapContainer = (LinearLayout) relView.findViewById(R.id.mapContainer);
UtilFunctions.logIfDebug("MembershipsList","Attaching Map. siteID " + siteID + " childCount = " + mapContainer.getChildCount());
if (mapContainer.getChildCount() > 0) {
return;
}
MapView mapView = getMapView();
mapContainer.addView(mapView);
}
它正常工作的大部分時間,但是當屏幕關閉,回來,或者打開的項目滾動屏幕後退,mapView消失。 我知道這是因爲視圖正在被listView回收。如果我嘗試附加在getView(地圖)(如果視圖處於打開位置):
public View getView(int position, View convertView,
ViewGroup parent) {
final View resultView = super.getView(position, convertView, parent);
LayoutParams lp = resultView.getLayoutParams();
if (curOpenPos == position) {
LinearLayout mapContainer = (LinearLayout) resultView.findViewById(R.id.mapContainer);
lp.height = item_height_open;
attachMap(resultView, siteID);
}
} 地圖上消失時,該項目完全展開,但是當屏幕熄滅,就可以了確實出現。
任何人都知道爲什麼會發生這種情況,或者我能做些什麼來解決它?
也許你可以考慮總是將singleton mapView添加到你的mapContainer中,但是可以調用Visibility。例如非選中的行setVisibility(View.GONE),選中的行setVisibility(View.VISIBLE)。這是否會改變行爲? – CSmith 2012-07-12 18:01:23
請參閱此鏈接http://stackoverflow.com/questions/2961275/android-mapview-contained-within-a-listview希望它可以幫助 – 2012-07-13 14:29:00