更新适配器的数据集而不更改正在显示的视图

时间:2013-04-07 08:54:03

标签: android

我正在使用ViewPager在杂志电子阅读器应用中显示文章。当应用程序初始化时,它从Web服务中提取10篇文章并使用它们来膨胀10个视图,这些视图将传递给PagerAdapter。当用户到达第六个视图时(当文章数组的大小减去当前位置小于4时),我想再加载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返回到显示第一个视图。如何在此处更改我的方法,以便在不更改当前显示的视图的情况下加载新文章?

0 个答案:

没有答案