2014-02-21 40 views
2

我在網上找到的所有ViewPager示例似乎都有一個可以滑過的靜態頁面數。我的應用程序適用於我的音樂博客,我希望用戶能夠點擊打開我的SinglePostActivity的帖子。它應該顯示帖子,然後允許用戶滑動視圖以便能夠看到上一篇文章和下一篇文章。如何製作連續的Android ViewPager?

顯然,我不想加載所有帖子並將它們添加到ViewPager中,但加載用戶單擊的帖子以及上一個和下一個帖子,以便用戶看到它們,重新刷卡。一旦滑動到下一篇文章完成後,它將不得不加載帖子,以便用戶可以滑動到該文章(反之亦然,如果他們滑動以查看以前的帖子)。

是否有任何Android示例如何實現這樣的事情?

+0

只需在該項目周圍設置尋呼機適配器循環,並將count設置爲'Integer.MAX_VALUE'。 –

回答

3

你必須通過擴展FragmentStatePagerAdapter創建自己的PostStatePagerAdapter類:

public PostStatePagerAdapter extends FragmentStatePagerAdapter { 
    private List data = null; 

    public PostStatePagerAdapter(FragmentManager fm, List data){ 
     super(fm); 
     this.data = data; 

    } 

@Override 
public Fragment getItem(int arg0) { 
     fragmentdata = data.get(arg0) 

     // create your new fragment that displays your music blog entry by using fragment data got from data list 
     return <your fragment>; 
    } 


    @Override 
public int getCount() { 
    return data.size(); 
} 
} 

,並在活動課onCreate()

 PostStatePagerAdapter adapter = new    PostStatePagerAdapter(getSupportFragmentManager(), dataList); 

     ViewPager viewPager = (ViewPager) findViewById(R.id.postPager); // defined in layout xml 
     viewPager.setAdapter(adapter); 
      // pass your clicked item index to this activity and set it as view pager's current item 
     viewPager.setCurrentItem(index); 

記住擴展這個活動課FragmentActivity

希望這會有所幫助。

+0

感謝大家的幫助。我確信,我將能夠弄清楚如何實施它。我<3計算器:P – jas7457

1

我建議你在ViewPager中使用FragmentStatePagerAdapter。

Android Developer - Lateral Navigation

你會發現他們說,

FragmentStatePagerAdapter - 這是最好的分頁跨越對象的集合,它的頁面數量是不確定的。它會在用戶導航到其他頁面時破壞碎片,從而最大限度地減少內存使用量。

實現會有所不同,因爲我不確定你的數據源是什麼樣的。然而,在我的上一次實現中,我只是用一組數據構造了PagerAdapter,並在必要時推送了新數據(即,我將加載10個帖子,並且在用戶查看倒數第二個帖子後,加載下10個左右,更新數組)。

實施例(例如粗糙的,離手):

public class PostPagerAdapter extends FragmentStatePagerAdapter { 

    private ArrayList<Post> mPosts; 
    private FetchPostAsyncTask mFetchPostAsyncTask; 

    public PostPagerAdapter(FragmentManager fm, ArrayList<Post> posts) { 
     super(fm); 

     mPosts = posts; 
     mFetchPostAsyncTask = new FetchPostAsyncTask(mPosts); 
    } 

    @Override 
    public Fragment getItem(int i) { 

     ImageFragment fragment = ImageFragment.newInstance(mPosts.get(i)); 

     //If we're almost at the last post, fetch some more 
     if(i == getCount() - 2) { 
      if(mFetchPostAsyncTask.getStatus() == AsyncTask.Status.FINISHED) { 
       mFetchPostAsyncTask = new FetchPostAsyncTask(mPosts); 
      } 

      if(mFetchPostAsyncTask.getStatus() == AsyncTask.Status.PENDING) { 
       mFetchPostAsyncTask.execute(); 
      } 
     } 

     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return mPosts.size(); 
    } 
} 
+1

我實際上正在看這個,但不確定如何更新數組/捕捉滑動。你能否爲我提供你的'FragmentPagerAdapter'或'FragmentStatePagerAdapter'實現?謝謝 – jas7457

+0

我已經使用副手實現了我的帖子。可能充滿了錯誤/錯別字,但它應該沒問題。 –