1

ViewPager雑誌の電子書籍リーダー アプリで記事を表示するためにを使用しています。アプリが初期化されると、Web サービスから 10 個の記事を取得し、それらを使用して 10 個のビューをインフレートし、PagerAdapter. ユーザーが 6 番目のビューに到達したとき (記事配列のサイズから現在の位置を引いたサイズが 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は最初のビューの表示に戻ります。現在表示されているビューを変更せずに新しい記事をロードできるように、ここでアプローチを変更するにはどうすればよいですか?

4

0 に答える 0