我正在使用 aViewPager
在杂志电子阅读器应用程序中显示文章。当应用程序初始化时,它从 Web 服务中提取 10 篇文章并使用它们来扩充 10 个视图,这些视图被传递给PagerAdapter
. 当用户到达第六个视图时(当文章数组的大小减去当前位置小于四个时),我想再加载10篇文章并将它们添加到PagerAdapter的视图末尾,这样当用户到达第 10 篇,下 10 篇已经加载完毕。使用以下代码似乎可以正常工作:
@Override
public Object instantiateItem(View arg0, int position) {
final Article a = toShow.get(position);
View v = makeView(a);
((ViewPager) arg0).addView(v);
outer: if (toShow.size() - position < 4 && noMore == false){
ArrayList<Article> toAdd = new ArrayList<Article>();
int idx = toShow.size()-1;
try {
toAdd = new getPosts(idx).execute().get();
} catch (InterruptedException e) {e.printStackTrace();
} catch (ExecutionException e) {e.printStackTrace();}
idx++;
if (toAdd.isEmpty()){
noMore = true;
break outer;
}
else {
for (int curr = 0; curr < toAdd.size(); curr++){
toShow.add(idx, toAdd.get(curr));
}
this.notifyDataSetChanged();
System.out.println("added more");
}
}
return v;
}
除此之外,当数据集改变时(即当新文章完成加载并添加到 中时PagerAdapter
),ViewPager
返回到显示第一个视图。我怎样才能在这里改变我的方法,以便可以在不改变当前显示的视图的情况下加载新文章?