转自:http://blog.csdn.net/gzsword/article/details/7284288
在做项目的时候,发现即使调用了galleryAdapter.notifyDataSetChanged();
但是ViewPager还是不会更新原来的数据。
后来在stackoverflow上面找到了方法,原文链接:
http://stackoverflow.com/questions/7263291/viewpager-pageradapter-not-updating-the-view
于是花了一点时间,修改了代码:
- 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 是一个PagerAdapter的内部常量,值是-2,
API里面有说明:
int android.support.v4.view.PagerAdapter.POSITION_NONE = -2 [0xfffffffe]
可以更新数据了。嘿嘿。