java.lang.IllegalStateException:应用程序的PagerAdapter在不调用PagerAdapter#notifyDataSetChanged的情况下更改了适配器的内容

时间:2015-07-23 16:28:24

标签: java android android-viewpager

我正在构建一个简单的图库应用。 这些图片与服务器同步。 现在我有一个简单的gridView显示图像和 onClick 图像在 viewPager 中打开。就像Android默认图库一样。

问题是 -

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged!

我需要一种从后台通知viewPager的适配器的方法。 要在后台加载数据,我使用Koush/Ion

  

CLass ImageGrid(摘要)

public class ImageGrid extends Fragment implements HttpConnectCallback, FutureCallback<JsonArray> {
...
..
.
gridView.setOnItemClickListener(CustomListener);
//onClick-> the following code executes

PagerFragment pagerFragment = new PagerFragment().newInstance(position);
...
..
.

当PagerFragment存活时,数据加载仍然在后台继续

  

Class PagerFragment(摘要)

public class PagerFragment extends Fragment {
...
..
.
viewPager = (ViewPager) view.findViewById(R.id.splash_pager);

viewPager.setAdapter(new PagerAdapter);// a PagerAdapter 

现在,适用于两个类图像相同。 即我有一个static ArrayList<String>,其中包含磁盘上图像的路径。

现在,如果列表中的数据发生变化,我会在发生异常后尝试滚动viewPager

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged!
at android.support.v4.view.ViewPager.populate(Unknown Source)
            at android.support.v4.view.ViewPager.populate(Unknown Source)
            at android.support.v4.view.ViewPager.smoothScrollTo(Unknown Source)
            at android.support.v4.view.ViewPager.scrollToItem(Unknown Source)
            at android.support.v4.view.ViewPager.setCurrentItemInternal(Unknown Source)
            at android.support.v4.view.ViewPager.onTouchEvent(Unknown Source)
...
...
...

1 个答案:

答案 0 :(得分:1)

使用 clone() 方法复制 ArrayList 中传递给 ViewPager's adapter构造函数的数据终于解决了这个问题。