欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Android App中ViewPager使用PagerAdapter的方法

 更新時(shí)間:2016年03月23日 11:00:26   作者:tinyphp  
這篇文章主要介紹了詳解Android App中ViewPager使用PagerAdapter的方法,同時(shí)附帶了一個(gè)ViewPager的PagerAdapter不能更新數(shù)據(jù)的問(wèn)題解決方法,需要的朋友可以參考下

PageAdapter是一個(gè)抽象類(lèi),直接繼承于Object,導(dǎo)入包android.support.v4.view.PagerAdapter即可使用。

要使用PagerAdapter,

首先要繼承PagerAdapter類(lèi),至少覆蓋以下方法:

在每次創(chuàng)建ViewPager或滑動(dòng)過(guò)程中,以下四個(gè)方法都會(huì)被調(diào)用,而instantiateItem和destroyItem中的方法要自己去實(shí)現(xiàn)。

public abstract int getCount();

這個(gè)方法,是獲取當(dāng)前窗體界面數(shù)

public abstract boolean isViewFromObject(android.view.View arg0, java.lang.Object arg1);

這個(gè)方法用于判斷是否由對(duì)象生成界面

public java.lang.Object instantiateItem(android.view.View container, int position);

這個(gè)方法,return一個(gè)對(duì)象,這個(gè)對(duì)象表明了PagerAdapter適配器選擇哪個(gè)對(duì)象放在當(dāng)前的ViewPager中

public void destroyItem(android.view.ViewGroup container, int position, java.lang.Object object);

這個(gè)方法,是從ViewGroup中移出當(dāng)前View

public class ViewPagerAdapter 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);
    }
    
  }

   
ViewPager的PagerAdapter不可以更新數(shù)據(jù)問(wèn)題的解決
在做項(xiàng)目的時(shí)候,發(fā)現(xiàn)即使調(diào)用了

galleryAdapter.notifyDataSetChanged();

但是ViewPager還是不會(huì)更新原來(lái)的數(shù)據(jù)。

后來(lái)在stackoverflow上面找到了方法,原文鏈接:
http://stackoverflow.com/questions/7263291/viewpager-pageradapter-not-updating-the-view
于是花了一點(diǎn)時(shí)間,修改了代碼:

protected PagerAdapter galleryAdapter = new PagerAdapter() { 
   
  @Override 
  public boolean isViewFromObject(View arg0, Object arg1) { 
     return arg0 == ((View)arg1);  
  } 
   
  @Override 
  public int getCount() { 
    return size; 
  } 
   
  @Override 
  public Object instantiateItem(View container, int position) { 
    return bindGalleryAdapterItemView(container, position); 
  } 
   
  @Override 
  public void destroyItem(View container, int position, Object object) { 
     ((ViewPager) container).removeView((View) object);  
  }; 
   
    @Override  
    public void finishUpdate(View arg0) {}  
      
    @Override 
    public void restoreState(android.os.Parcelable state, ClassLoader loader) { 
     
    }; 
  
    @Override  
    public Parcelable saveState() {  
      return null;  
    }  
  
    @Override  
    public void startUpdate(View arg0) {}  
     
    @Override 
    public int getItemPosition(Object object) { 
    return POSITION_NONE; 
    } 
 
}; 

注意:POSITION_NONE 是一個(gè)PagerAdapter的內(nèi)部常量,值是-2,
API里面有說(shuō)明:

int android.support.v4.view.PagerAdapter.POSITION_NONE = -2 [0xfffffffe]

可以更新數(shù)據(jù)了。嘿嘿。  

相關(guān)文章

最新評(píng)論