android ViewPager左右滑動翻頁,並可以刪除page


 

  首先新建一個Activity,繼承FragmentActivity。

  初始化一個Fragment的List集合,用於像FragmentStatePagerAdapter填充數據,而ViewPager由FragmentStatePagerAdapter的實例進行初始化。和ListView一樣,Fragment的List集合的數據變了,就通知FragmentStatePagerAdapter進行界面刷新。

  

ArrayList<Fragment> fragments =new ArrayList<Fragment>(); 

  Fragment fragment1 = newFragment();

  Fragment fragment2 = newFragment();

  fragments.add(mediaFragment1);

  fragments.add(mediaFragment2);

  TheMediaAdapter theAdapter = new TheMediaAdapter(getSupportFragmentManager(),fragments);

  viewpager.setAdapter(theAdapter);

 

 

     刪除一項時:

  

fragments.remove(index);

theAdapter.notifyDataSetChanged();

 

 

  TheMediaAdapter類:

//一定要繼承FragmentStatePagerAdapter,而不是FragmentPagerAdapter,不然刪除PageView中的一項后顯示的還是之前內存的頁。

public class TheMediaAdapter extends FragmentStatePagerAdapter {

private ArrayList<MediaFragment>fragments;

private FragmentManager fm;

public TheMediaAdapter(FragmentManager fm,ArrayList<MediaFragment>fragments) {

  super(fm);

  this.fm = fm;

  this.fragments=fragments;

}

 

@Override

public Fragment getItem(int arg0) {

  return fragments.get(arg0);

}

 

@Override

public int getCount() {

  // TODO Auto-generated method stub

  return fragments.size();

}

 

@Override  

public int getItemPosition(Object object) {  

  return POSITION_NONE;  

}

 

public void setFragments(ArrayList fragments) {

    if(this.fragments != null){

        FragmentTransaction ft = fm.beginTransaction();

        for(Fragment f:this.fragments){

          ft.remove(f);

        }

        ft.commit();

        ft=null;

        fm.executePendingTransactions();

    }  

    this.fragments = fragments;

    notifyDataSetChanged();

}

}

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM