Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在不更改显示的视图的情况下更新适配器的数据集_Android - Fatal编程技术网

Android 在不更改显示的视图的情况下更新适配器的数据集

Android 在不更改显示的视图的情况下更新适配器的数据集,android,Android,我正在使用一个ViewPager在杂志电子阅读器应用程序中显示文章。当应用程序初始化时,它会从一个web服务中提取10篇文章,并使用它们膨胀10个视图,这些视图被传递到PagerAdapter。当用户到达第六个视图时,文章数组的大小减去当前位置小于4,我想再加载10篇文章,并将它们添加到PagerAdapter视图的末尾,这样当用户到达第10篇文章时,下一篇10篇文章就已经加载了。这似乎与以下代码配合得很好: @Override public Object instant

我正在使用一个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将返回显示第一个视图。我如何在这里改变我的方法,以便在不改变当前显示视图的情况下加载新文章?

这样更好:在我的应用程序构建过程中,我会跳进跳出。我一次只能得到30秒的时间,但我会在半小时后停下来休息一下,如果没有人给出好的答案,那就不太可能了!我来看看。@Simon谢谢!你说得对,到那时我可能已经拍了拍我的额头了:@Simon Beleive,不管你信不信,我仍然对此耿耿于怀。有什么想法吗?