Android 中解决Viewpage调用notifyDataSetChanged()时界面无刷新的问题

作者:袖梨 2022-06-25

Android 中解决Viewpage调用notifyDataSetChanged()时界面无刷新的问题

问题描述

相信很多做过Viewpager的人肯定遇到过这个问题,这个是bug还是Android就是如此设计的,我们不做讨论。总之,它确实影响我们功能的实现了。

可能不少同学选择为Viewpager重新设置一遍适配器adapter,达到刷新的目的。但是这种方法在大多数情况下,是有问题的。

解决办法

以我们可以尝试着修改适配器的写法,覆盖getItemPosition()方法,当调用notifyDataSetChanged时,让getItemPosition方法人为的返回POSITION_NONE,从而达到强迫viewpager重绘所有item的目的。

具体代码如下:

classSearchAdapterextendsPagerAdapter {
 
   privateintmChildCount =0;
 
   @Override
   publicvoidnotifyDataSetChanged() {    
      mChildCount = getCount();
      super.notifyDataSetChanged();
   }
 
   @Override
   publicintgetItemPosition(Object object)  {    
      if( mChildCount >0) {
      mChildCount --;
      returnPOSITION_NONE;
      }
      returnsuper.getItemPosition(object);
   }
 
}

相关文章

精彩推荐