ViewPager的PagerAdapter不可以更新数据

转自:http://blog.csdn.net/gzsword/article/details/7284288

在做项目的时候,发现即使调用了galleryAdapter.notifyDataSetChanged();

但是ViewPager还是不会更新原来的数据。


后来在stackoverflow上面找到了方法,原文链接:

http://stackoverflow.com/questions/7263291/viewpager-pageradapter-not-updating-the-view


于是花了一点时间,修改了代码:


[java]  view plain copy
  1. protected PagerAdapter galleryAdapter = new PagerAdapter() {  
  2.       
  3.     @Override  
  4.     public boolean isViewFromObject(View arg0, Object arg1) {  
  5.          return arg0 == ((View)arg1);   
  6.     }  
  7.       
  8.     @Override  
  9.     public int getCount() {  
  10.         return size;  
  11.     }  
  12.       
  13.     @Override  
  14.     public Object instantiateItem(View container, int position) {  
  15.         return bindGalleryAdapterItemView(container, position);  
  16.     }  
  17.       
  18.     @Override  
  19.     public void destroyItem(View container, int position, Object object) {  
  20.          ((ViewPager) container).removeView((View) object);   
  21.     };  
  22.       
  23.        @Override    
  24.        public void finishUpdate(View arg0) {}    
  25.            
  26.        @Override  
  27.        public void restoreState(android.os.Parcelable state, ClassLoader loader) {  
  28.           
  29.        };  
  30.    
  31.        @Override    
  32.        public Parcelable saveState() {    
  33.            return null;    
  34.        }    
  35.    
  36.        @Override    
  37.        public void startUpdate(View arg0) {}    
  38.          
  39.        @Override  
  40.        public int getItemPosition(Object object) {  
  41.         return POSITION_NONE;  
  42.        }  
  43.   
  44. };  

注意:POSITION_NONE 是一个PagerAdapter的内部常量,值是-2,

API里面有说明:

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


可以更新数据了。嘿嘿。

你可能感兴趣的:(ViewPager的PagerAdapter不可以更新数据)