2013-01-23 13 views
5

पुस्तकालय:क्या PullToRefresh FragmentPagerAdapter के साथ काम करता है?

नमूना PullToRefreshListInViewPagerActivity केवल PageAdapter के साथ काम करता है।

मुझे 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 जोड़ सकते हैं और उस पर पुल-टू-ताज़ा सुविधा जोड़ सकते हैं।

एंड्रॉइड-पुलट्रोफ्रेश रेपॉजिटरी में ListFragment का उदाहरण है।

एंड्रॉइड डेवलपर्स वेबसाइट पर FragmentPagerAdapter या FragmentStatePagerAdapter बनाने के तरीके पर एक नमूना कोड है।

तुम भी अपने परीक्षण परियोजना पर एक नज़र ले जा सकते हैं: https://github.com/caiguanhao/FSPAtest

+0

अच्छा आदमी है, नमूना के लिए धन्यवाद, यह बहुत अच्छी तरह से और सरल समझने के लिए काम करता है। – Marckaraujo

+0

+1 thnx आदमी, आपने मेरा दिन बनाया –

संबंधित मुद्दे