PagerAdapter基本概况

来源:互联网 发布:同城团购用什么软件 编辑:程序博客网 时间:2024/06/10 00:44

import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;

PagerAdapter
至少实现



  1. public Object instantiateItem(ViewGroup container,int position)
          建立指定位置的page
          return:   Object,代表new Page  (不一定一定是view,任一可代表view的key值都可以)



  1. public void destroyItem(ViewGroup container,int position,Object object)
         移除相关item
         其中参数  object为  :the same object that was returned by 'instantiate(container,position);


  1. public abstract int getCount()



  1. public abstract boolean isViewFromObject(View view,Object object)
          其中参数  object 同  1 中返回的object配对。
          view: Page view to check for associate with object
          object: object to check for associate with view
        功能: 判断1 中返回的key(Object)与一个页面视图是否代表的是同一个视图(即他俩是否是对应的,是否表示同一个view)



其他非必须实现的:

  1. public void startUpdate(ViewGroup container)
  2. public void finishUpdate(ViewGroup container)
  3. public void notifyDataChanged()



  1. public int getItemPosition(Object object)
         "called when the host view is attempting to determine if an item's position has changed"
         return:  POSITION_UNCHANGED: position of given item has not changed(默认不更新)
                     POSITON_NONE:      the item is no longer present(会更新)



  1. public float getPageWidth(int position)
         "return the proportional width of a given page as a percentage of the viewPager's measured width from(0.f~1.f)
        占比!




  1. public void getOffscreenPageLimit(int limit)     默认为1
         缓存个数,默认情况下,当前item的左一个及右一个缓存,其他的item会destroy






实例:

    public class ViewPagerAdapterStyle extends PagerAdapter {

        private List<Entity> tDataList = new ArrayList<Entity>();

        public ViewPagerAdapterStyle(List<Entity> dataList) {
            if (dataList != null) {
                tDataList.addAll(dataList);
            }
        }

        @Override
        public int getCount() {
            return tDataList.size();
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == arg1;
        }

        @Override
        public void startUpdate(ViewGroup container) {
            super.startUpdate(container);
        }

        @Override
        public void finishUpdate(ViewGroup container) {
            super.finishUpdate(container);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
//       ((ViewPager) view).removeView(viewLists.get(position));
            if (container instanceof ViewPager) {
                (container).removeView((View) object);
            }
        }

        @Override
        public int getItemPosition(Object object) {
            return POSITION_NONE;
//       }
//       return super.getItemPosition(object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            final Entity data = dataList.get(position);
            ViewHolder_002 viewHolder_002 = null;
            View item = container.findViewById(position);
            if (item == null) {
                item = ImageUtil.inflate(R.layout.container, null);
                viewHolder_002 = new ViewHolder_002();
                viewHolder_002.img = (SimpleDraweeView) item.findViewById(R.id.backImg);
                item.setId(position);
                item.setTag(viewHolder_002);
            } else {
                viewHolder_002 = (ViewHolder_002) item.getTag();
            }

            setBackImg(viewHolder_002.img, data.img);
            if (container instanceof ViewPager) {
                (container).addView(item);
            }
            setOnClickListener(item, data.jump);
            return item;
        }

        //设置页卡每页显示item的数量
        @Override
        public float getPageWidth(int position) {
            if (getCount() == 1) {
                return 1;
            } else {
                return pageWidth;
            }

        }
    }


0 0