PagerAdapter、FragmentPagerAdapter的使用

前言: PagerAdapter 是在 android.v4包下的,FragmentPagerAdapter 是PagerAdapter的子类,PagerAdapter 是用来装载一些View。而FragmentPagerAdapter 在更多的时候是用来装载Fragment的!当我们使用ViewPager+Fragment 动态的添加Fragment的时候,在此我们可以借助FragmentPagerAdapter来实现!当然使用PagerAddapter 也可以实现!
在这里例举FragmentPagerAdapter 的使用,而不需要重复的创建Fragment实例!
这里写图片描述
图 一

这里写图片描述
图 二

由图一滑动切换到图二,在这里我们发现在界面上没有任何的变动而只是数据发生了变化。

/**
 * @since 2016/4/21
 * @author wangly
 */
public class MainActivity extends FragmentActivity {
    List<Integer> datas = new ArrayList<Integer>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//      requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.item);
        datas.add(1500);
        datas.add(1600);
        CustomViewPager viewPager = (CustomViewPager) findViewById(R.id.viewPager);
        TestFragmentAdapter adapter = new TestFragmentAdapter(getSupportFragmentManager());
        adapter.setViewCount(datas);
        adapter.setViewPagerScroll(viewPager);
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(0);
    }


}
/**
 * @since 2016/4/21
 * @author wangly
 */
public class TestFragmentAdapter extends FragmentPagerAdapter{
    private List<Integer> values;
    private CustomViewPager viewPager;

    public void setViewCount(List<Integer> data){
        this.values = data;
    }

    public void setViewPagerScroll(CustomViewPager customViewPager){
        this.viewPager = customViewPager;
    }
    public TestFragmentAdapter(FragmentManager fm) {
        super(fm);
    }
    @Override
    public Fragment getItem(int position) {
        return TestFragment.newInstance(values.get(position),viewPager);
    }

    @Override
    public int getCount() {
        return values.size();
    }
}
/**
 * @since 2016/4/21
 * @author wangly
 */
public final class TestFragment extends Fragment {
    private static final String TAG = TestFragment.class.getSimpleName();
    TestFragment fragment;
    private CustomViewPager viewPager;
    private View view;
    private  int values;
    private RelativeLayout rl_circleView;
    TreeView treeView;

    public static TestFragment newInstance(int value,CustomViewPager customViewPager) {
        TestFragment fragment = new TestFragment();

        fragment.values = value;
        fragment.viewPager = customViewPager;
        Log.d("wangly", "创建了·····");
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        if ((savedInstanceState != null) && savedInstanceState.containsKey(TAG)) {
        }
        view = LayoutInflater.from(getActivity()).inflate(R.layout.activity_main, null);
        initView();
        return view;
    }

    private void initView() {

        rl_circleView = (RelativeLayout) view.findViewById(R.id.rl_cirView);

        CircleView circleView = (CircleView) view.findViewById(R.id.id_circleview);
        circleView.setFinishStateImage(1,0,0);
        circleView.setStepValue(values);
        circleView.setOnViewTounchListener(new OnViewTounchListener() {

            @Override
            public void tofling() {

            }

            @Override
            public void click() {
                historgram.setVisibility(View.VISIBLE);
                rl_circleView.setVisibility(View.GONE);
                viewPager.setScanScroll(false);
            }
        });
        treeView.setOnViewTounchListener(new OnViewTounchListener() {

            @Override
            public void tofling() {

            }

            @Override
            public void click() {
                rl_circleView.setVisibility(View.VISIBLE);
                historgram.setVisibility(View.GONE);
                viewPager.setScanScroll(true);

            }
        });
    }


    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }

}

当然如果使用PagerAdapter 的话需要重写当中的几个方法

/**
 * @since 2016/4/21
 * @author wangly
 */
public class TestAdapter extends PagerAdapter {

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        // TODO Auto-generated method stub
        return false;
    }


    @Override
    public void destroyItem(View container, int position, Object object) {
        // TODO Auto-generated method stub
        super.destroyItem(container, position, object);
    }

    @Override
    public Object instantiateItem(View container, int position) {
        // TODO Auto-generated method stub
        return super.instantiateItem(container, position);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值