我正在构建一个简单的图库应用。 这些图片与服务器同步。 现在我有一个简单的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)
...
...
...
答案 0 :(得分:1)
使用 clone()
方法复制 ArrayList
中传递给 ViewPager's adapter
构造函数的数据终于解决了这个问题。