2013-01-23 15 views
5

図書館:PullToRefreshListInViewPagerActivityのみPageAdapterで動作し、試料中のPullToRefreshはFragmentPagerAdapterと連携しますか?

FragmentPageAdapterと動作させる方法が見つかりませんでした。

サンプル:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_ptr_list_in_vp); 

     mViewPager = (ViewPager) findViewById(R.id.vp_list); 
     mViewPager.setAdapter(new ListViewPagerAdapter()); 
    } 

    private class ListViewPagerAdapter extends PagerAdapter { 

     @Override 
     public View instantiateItem(ViewGroup container, int position) { 
      Context context = container.getContext(); 

      PullToRefreshListView plv = (PullToRefreshListView) LayoutInflater.from(context).inflate(
        R.layout.layout_listview_in_viewpager, container, false); 

      ListAdapter adapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, 
        Arrays.asList(STRINGS)); 
      plv.setAdapter(adapter); 

      plv.setOnRefreshListener(PullToRefreshListInViewPagerActivity.this); 

      // Now just add ListView to ViewPager and return it 
      container.addView(plv, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 

      return plv; 
     } 

     @Override 
     public void destroyItem(ViewGroup container, int position, Object object) { 
      container.removeView((View) object); 
     } 

     @Override 
     public boolean isViewFromObject(View view, Object object) { 
      return view == object; 
     } 

     @Override 
     public int getCount() { 
      return 3; 
     } 

    } 

    @Override 
    public void onRefresh(PullToRefreshBase<ListView> refreshView) { 
     new GetDataTask(refreshView).execute(); 
    } 

    private static class GetDataTask extends AsyncTask<Void, Void, Void> { 

     PullToRefreshBase<?> mRefreshedView; 

     public GetDataTask(PullToRefreshBase<?> refreshedView) { 
      mRefreshedView = refreshedView; 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      // Simulates a background job. 
      try { 
       Thread.sleep(4000); 
      } catch (InterruptedException e) { 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      mRefreshedView.onRefreshComplete(); 
      super.onPostExecute(result); 
     } 
    } 

} 

答えて

3

あなたはFragmentPageAdapter(またはFragmentStatePageAdapter)にListFragmentを追加し、その上にプルにリフレッシュ機能を追加することができます。

Android-PullToRefreshリポジトリの例は、ListFragmentです。

Android Developersのウェブサイトには、FragmentPagerAdapterまたはFragmentStatePagerAdapterの作成方法に関するサンプルコードがあります。

あなたはまた、私のテストプロジェクトを見てとることができます。https://github.com/caiguanhao/FSPAtest

+0

ニース男、サンプルへの感謝を、それは非常によく、簡単な理解に努めています。 – Marckaraujo

+0

+1 thnx男、あなたは私の日を作った –

関連する問題