6

Tôi có hoạt động với listView, trong đó mỗi mục có thể được mở rộng khi được nhấp, hiển thị bản đồXem. Nếu một mục khác được nhấp, mục đang mở sẽ bị đóng. Các hoạt động mở rộng MapActivity, và chỉ có một thể hiện của MapView, mà tôi loại bỏ và thêm vào các mặt hàng như cần thiết như thế này:MapView trong danh sáchXem mục

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); 
} 

Nó hoạt động tốt hầu hết thời gian, nhưng khi màn hình tắt và trở lại, hoặc mục đang mở được cuộn ra khỏi màn hình và ngược lại, mapView biến mất. Tôi biết điều này là do chế độ xem đang được tái chế bởi listView. Nếu tôi cố gắng để đính kèm bản đồ trong getView() (nếu chế độ xem ở vị trí mở):

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); 
      } 

} bản đồ biến mất khi mặt hàng đó là hoàn toàn mở rộng, nhưng khi màn hình rời sân, trên đó xuất hiện.

Bất kỳ ai biết tại sao điều này xảy ra hoặc tôi có thể làm gì để giải quyết vấn đề này?

+0

có lẽ bạn có thể xem xét LUÔN LUÔN thêm bản đồ singleton vào bản đồ của bạnContainer, nhưng fiddle với Visibility. ví dụ. các hàng không được chọn setVisibility (View.GONE), hàng setVisibility đã chọn (View.VISIBLE). Điều này có thay đổi hành vi không? – CSmith

+0

Vui lòng tham khảo liên kết này http://stackoverflow.com/questions/2961275/android-mapview-contained-within-a-listview hy vọng nó sẽ giúp –

Trả lời

1

Có thể bạn có thể triển khai lớp Chủ sở hữu. Một hơn là giữ một thể hiện cho MapView của bạn để nó có thể được phục hồi.

Trong ví dụ cuối, HERE được hiển thị cách thực hiện điều đó với các chế độ xem khác.

Các vấn đề liên quan