资讯专栏INFORMATION COLUMN

ViewPager源码分析(二) Page的复用

Jensen / 2498人阅读

摘要:利用完成复用把中获得的控件在中复用省去重复创建控件一种常见的情况,举例有五个固定的控件要利用显示这种情况下,先创建好个控件,并绑定将放入根据计算出要取中的哪个

一。利用PagerAdapter.instantiateItem,destroyItem 完成复用

1) 把destroyItem中获得的View控件,在instantiateItem中复用
省去重复创建View控件

    private LinkedList mViewCache = null;  
    
    @Override  
    public Object instantiateItem(ViewGroup container, int position) {  
        Log.e("test","instantiateItem " + position);  
        ViewHolder viewHolder = null;  
        View convertView = null;  
        if(mViewCache.size() == 0){  
            convertView = this.mLayoutInflater.inflate(R.layout.viewadapter_item_layout ,  
                    null ,false);  
            TextView textView = (TextView)convertView.findViewById(R.id.view_pager_item_textview);  
            viewHolder = new ViewHolder();  
            viewHolder.textView = textView;  
            convertView.setTag(viewHolder);  
        }else {  
            convertView = mViewCache.removeFirst();  
            viewHolder = (ViewHolder)convertView.getTag();  
        }  
  
        viewHolder.textView.setText(datas.get(position).title);  
        viewHolder.textView.setTextColor(Color.YELLOW);  
        viewHolder.textView.setBackgroundColor(Color.GRAY);  
  
        container.addView(convertView ,ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT );  
  
        return convertView;  
    }  
  
    @Override  
    public void destroyItem(ViewGroup container, int position, Object object) {  
        Log.e("test","destroyItem " + position);  
        View contentView = (View) object;  
        container.removeView(contentView);  
        this.mViewCache.add(contentView);  
    }  

2)一种常见的情况,举例:有五个固定的控件要利用ViewPager显示
这种情况下,先创建好5个控件,并绑定ViewHolder,将ViewHolder放入List,

    @Override  
    public Object instantiateItem(ViewGroup container, int position) {  
        //根据position计算出要取List中的哪个ViewHolder
        viewhodler = list.get(index);
        return viewhodler.itemView;
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70768.html

相关文章

  • ViewPager2重大更新,支持offscreenPageLimit

    摘要:前言最近发布了版本,新增功能,该功能在上并不友好,现在官方将此功能延续下来,这回是骡子是马呢赶紧拉出来溜溜阅读指南内容基于版本讲解,由于正式版还未发布,如有功能变动有劳看官指出内容重点介绍的特性和预加载机制,另外包括的状态和的生命周前言 最近ViewPager2发布了1.0.0-alpha04版本,新增offscreenPageLimit功能,该功能在ViewPager上并不友好,现在官方将...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<