不多说,ViewPager的功能很强大,可以预加载不同的页面。但是,viewpager是所有页面基本上是一起加载的,为此,为了实现类似于tabhost的效果,自己动手写一个。
主要原理(1)是viewPager中view的替换原理,除了第一个页面加载原先的view,其余的页面全部加载一个无用的view用于填充空间,然后哪个页面被选中,在替换当前的view为真实的页面view。
private void setNewViewPagerView(int position){
listViews.remove(position);
listViews.add(position, view );
mpAdapter.notifyDataSetChanged();
}
(2)是 然后重写适配器的这两个方法
public int getItemPosition(Object object) {
return POSITION_NONE;
}
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView(mListViews.get(arg1));
if(arg1 < mListViews.size() -1){
((ViewGroup) arg0).removeView((View)arg2);
}
}