android之ViewPager

来源:互联网 发布:呼死你淘宝怎么找 编辑:程序博客网 时间:2024/06/06 00:18

gallery被google放弃后,替代物就成了HorizontalScrollView和ViewPager。

ViewPager是android.support.v4.view.PagerAdapter包里的API。用来低版本向上兼容的包。感觉ViewPager好像能放进去很多东西,因为他的适配器是滑进来时的时候初始化,也就是加载数据,这就意味着不用一开始就把适配器里的数据全部加载进来。HorizontalScrollView貌似也有人这么做了,但是好像很麻烦。

感觉ViewPager的使用分为三部分。

1.在xml定义,PagerTitleStrip的定义需要镶嵌到ViewPager里。

2.创建数据源,包括ViewPager的View数据,和PagerTitleStrip的string数据。一般是用list来装。

    //ViewPager的集合创建    List<View> getViewPagerList(int... pagerLayout) {        List<View> list = new ArrayList<>();        for (int currentLayout : pagerLayout) {            list.add(LayoutInflater.from(context).inflate(currentLayout, null));        }        return list;    }    //PagerTitleStrip的集合创建    List<String> creatPagerTitleStripList(String... title) {        List<String> list = new ArrayList<>();        for (String currentTitle : title) {            list.add(currentTitle);        }        return list;    }
3.加载PagerAdapter。一般都是自定义的。

    //自定义ViewPager适配器PagerAdapter--------无法生成Title???    class MyPagerAdapter extends PagerAdapter {        List<View> viewList;        List<String> titleList;        PagerAdapterAction pagerAdapterAction;        public MyPagerAdapter(List<View> viewList, List<String> titleList, PagerAdapterAction pagerAdapterAction) {            this.viewList = viewList;            this.titleList = titleList;            this.pagerAdapterAction = pagerAdapterAction;        }        //判断是否由对象生成界面        @Override        public boolean isViewFromObject(View view, Object object) {            //return view == viewList.get((int)Integer.parseInt(object.toString()));            return view == object;        }        @Override        public int getCount() {            return viewList.size();        }        //加载滑进来的View        @Override        public Object instantiateItem(ViewGroup container, int position) {            container.addView(viewList.get(position));            View layout = viewList.get(position);            //接口回调            pagerAdapterAction.instantiateItemAction(layout, position);            return viewList.get(position);        }        //销毁滑出去的View        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView(viewList.get(position));        }        //生成Title        @Override        public CharSequence getPageTitle(int position) {            if (titleList == null) {                return super.getPageTitle(position);            } else {                return titleList.get(position);            }        }    }    //ViewPager适配器接口    interface PagerAdapterAction {        void instantiateItemAction(View layout, int position);    }




0 0
原创粉丝点击