PagerAdapter基本概况


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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值