FragmentPagerAdapter——ViewPager中添加fragment

FragmentPagerAdapter是PagerAdapter中的其中一种实现。它将每一个页面表示为一个 Fragment,并且每一个Fragment都将会保存到fragment manager当中。而且,当用户没可能再次回到页面的时候,fragment manager才会将这个Fragment销毁。

这种pager十分适用于有一些静态fragment,例如一组tabs,的时候使用。每个页面对应的Fragment当用户可以访问的时候会一直存在内存中,但是,当这个页面不可见的时候,view hierarchy将会被销毁。这样子会导致应用程序占有太多资源。当页面数量比较大的时候,建议使用 FragmentStatePagerAdapter

当使用FragmentPagerAdapter的时候,ViewPager一定要使用正确的ID set。

FragmentPagerAdapter的子类只要实现 getItem(int) 和 getCount()方法。

下面是示例代码:

publicclassFragmentPagerSupportextendsFragmentActivity{
   static final int NUM_ITEMS =10;
   MyAdapter mAdapter;
   ViewPager mPager;
    @Override
   protectedvoid onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       setContentView(R.layout.fragment_pager);
       **mAdapter =newMyAdapter(getSupportFragmentManager());**
       mPager =(ViewPager)findViewById(R.id.pager);
       **mPager**.setAdapter(mAdapter);
        Button button =(Button)findViewById(R.id.goto_first);
       button.setOnClickListener(newOnClickListener(){
            publicvoid onClick(View v){
                mPager.setCurrentItem(0);
            }
       });
       button =(Button)findViewById(R.id.goto_last);
       button.setOnClickListener(newOnClickListener(){
            publicvoid onClick(View v){
                mPager.setCurrentItem(NUM_ITEMS-1);
            }
       });
   }
   public static class MyAdapter extends **FragmentPagerAdapter**{
       publicMyAdapter(FragmentManager fm){
            super(fm);
       }
       @Override
       publicint getCount(){
            return NUM_ITEMS;
       }
       @Override
       publicFragment getItem(int position){
            return **ArrayListFragment.newInstance(position);**
       }
   }

   public static class ArrayListFragment extends ListFragment{
       int mNum;
       static ArrayListFragment **newInstance(int num)**{
            ArrayListFragment f =new ArrayListFragment();
            Bundle args =newBundle();
            args.putInt("num", num);
            f.setArguments(args);
            return f;
       }
       @Override
       publicvoid onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            mNum = getArguments()!=null? getArguments().getInt("num"):1;
       }

       @Override
       publicView onCreateView(LayoutInflater inflater,ViewGroup container,
                Bundle savedInstanceState){
            View v = inflater.inflate(R.layout.fragment_pager_list, container,false);
            View tv = v.findViewById(R.id.text);
            ((TextView)tv).setText("Fragment #"+ mNum);
            return v;
       }
       @Override
       publicvoid onActivityCreated(Bundle savedInstanceState){
            super.onActivityCreated(savedInstanceState);
            setListAdapter(newArrayAdapter<String>(getActivity(),
                    android.R.layout.simple_list_item_1,Cheeses.sCheeseStrings));
       }
       @Override
       publicvoid onListItemClick(ListView l,View v,int position,long id){
            Log.i("FragmentList","Item clicked: "+ id);
       }
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值