2012-03-09 68 views
1

我有一個Activity我有一個ListView,但點擊一個Button,我想用MapView替換ListView
我有一些選擇來做到這一點,比如已經在佈局中加載了MapView,但將它的可見性設置爲View.GONE,並且僅當用戶單擊按鈕時纔可見。
另一種選擇是使用removeView()addView(),但是我不能這樣做,因爲佈局是LinearLayout,並且視圖應該被添加到它的中間(不知道是否有任何方法可以做到這一點)。
最後一個選項是使用ViewStub,但是我從未使用過它。通過MapView替換ListView

以上哪個選項是最佳性能明智的,爲什麼?考慮到用戶可以多次在ListViewMapView之間切換。

編輯:忘了提及ViewSwitcher,從未使用過。

+0

回答你的第一個問題,有:http://developer.android.com/reference/android/view/ViewGroup.html#addView%28android.view.View,%20int%29 – njzk2 2012-03-09 11:18:43

+0

是的,我忘了那個,但我不認爲我應該經常添加和刪除視圖。 – noob 2012-03-09 11:24:59

+1

如果您打算在兩次之間切換,我會將它們添加到佈局並顯示/隱藏相應的佈局,因爲這樣會更快。如果你只打算做一次,那麼添加/刪除可能是更好的解決方案。 – 2012-03-09 11:25:46

回答

0

搜索了很多之後,我已經知道了這些東西 -
添加和刪除視圖會太糟糕,並且容易崩潰。
設置可見性是一個不錯的選擇,但是,性能不會提高。
使用ViewStub是更好的解決方案,因爲初始加載時間縮短了。
使用ViewFlipper也是非常好用的解決方案。這很容易,我最終在我的應用程序中使用了ViewFlipper,並且對性能沒有太大的影響(主要原因是它很容易添加動畫)

我想在ViewFlipper中使用ViewStub。我會讓你知道我什麼時候會成功。

PS:這個問題仍然可以回答。如果我在這裏犯了什麼錯誤,請告訴我。

0

製作一個LinearLayout其中有兩個小部件ListViewMapView。在你ActivityonCreate方法你ListView的可見性設置爲Gone有:

listview.setvisibility(View.GONE); 
    mapview.setvisibility(View.VISIBLE); 

方法,然後按一下按鈕監聽器把下面的代碼如下:

btn.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       mapview.setvisibility(View.GONE); 
listview.setvisibility(View.VISIBLE); 

//set adapter of your listview 
      } 
     }); 
+0

我不問如何去做。我問的是性能,哪一個最好實現性能。 – noob 2012-03-10 08:37:28