Работает ли PullToRefresh с FragmentPagerAdapter?

Библиотеки:

  • https://github.com/chrisbanes/Android-PullToRefresh
  • https://github.com/JakeWharton/Android-ViewPagerIndicator

В Sample 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); } } } 

Вы можете добавить ListFragment в FragmentPageAdapter (или FragmentStatePageAdapter) и добавить в него функцию Pull-To-Refresh.

В репозитории Android-PullToRefresh есть пример о ListFragment .

На веб-сайте Android Developers есть пример кода о том, как сделать FragmentPagerAdapter или FragmentStatePagerAdapter .

Вы также можете посмотреть мой тестовый проект: https://github.com/caiguanhao/FSPAtest

Intereting Posts