Activity代碼
public class MainActivity extends AppCompatActivity { private List<View> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); list= new ArrayList<View>(); /** * 通過view對象作為viewpager的數據源 */ View view1=View.inflate(this,R.layout.view1,null); View view2=View.inflate(this,R.layout.view2,null); View view3=View.inflate(this,R.layout.view3,null); View view4=View.inflate(this,R.layout.view4,null); list.add(view1); list.add(view2); list.add(view3); list.add(view4); //創建pageadapter Mypageadapter mypageadapter= new Mypageadapter(list); //初始化viewpager ViewPager pager= (ViewPager)findViewById(R.id.viewpager); //加載適配器 pager.setAdapter(mypageadapter); } }
總體的思路是創建一個View的list集合,通過inflate方法將頁面轉化為view,初始化list並添加view為元素,初始化viewpager並加載適配器
pageradapter代碼
public class Mypageadapter extends PagerAdapter { private List<View> viewList; public Mypageadapter(List<View>viewList){ this.viewList=viewList; } //返回頁卡的數量 @Override public int getCount() { return viewList.size(); } //page是否來自於對象 @Override public boolean isViewFromObject(View view, Object object) { return view==object; } /* * 實例化一個頁卡 * */ @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(viewList.get(position)); return viewList.get(position); } //銷毀一個頁卡 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(viewList.get(position)); } }
繼承pageradapter方法,創建一個有參的構造方法,在Activity中調用時將LIstVIew傳遞進來
除了實現的兩個方法之外還要實現一個初始化頁卡的方法和另一個銷毀頁卡的方法