2013-01-23 27 views
5

Kütüphaneler: PullToRefreshListInViewPagerActivity sadece PageAdapter ile çalışır Örnek AçPullToRefresh, FragmentPagerAdapter ile çalışır mı?

.

FragmentPageAdapter ile çalışmaya koymanın bir yolunu bulamadım.

Örnek:

@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); 
     } 
    } 

} 

cevap

3

Sen FragmentPageAdapter (veya FragmentStatePageAdapter) bir ListFragment eklemek ve üzerinde Pull-To-Yenileme özelliği ekleyebilirsiniz.

Android-PullToRefresh deposunun ListFragment hakkında bir örneği vardır.

Android Geliştiricileri web sitesinde, FragmentPagerAdapter veya FragmentStatePagerAdapter'un nasıl oluşturulacağı hakkında örnek bir kod vardır.

Ayrıca benim test proje bir göz atabilirsiniz: https://github.com/caiguanhao/FSPAtest

+0

Güzel adam, örnek için teşekkür, çok iyi ve basit anlamak için çalışır. – Marckaraujo

+0

+ 1 thnx adam, sen benim günümü yaptın –

İlgili konular