2012-03-09 71 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