¿Funciona PullToRefresh con FragmentPagerAdapter?
Bibliotecas:
- Https://github.com/chrisbanes/Android-PullToRefresh
- Https://github.com/JakeWharton/Android-ViewPagerIndicator
En el ejemplo PullToRefreshListInViewPagerActivity
sólo funciona con PageAdapter.
- ViewPagerIndicator ClassNotFoundException?
- Uso de la fuente personalizada en viewpagerindicator
- Android: RecyclerView dentro de un ScrollView
- El ViewPagerIndicator no es fácil con 1000 páginas
- Insertar páginas en el medio de un FragmentPageAdapter
No pude encontrar una manera de ponerlo a trabajar con FragmentPageAdapter
.
Muestra:
@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); } } }
- Gradle - No se puede importar viewpagerindicator en Android Studio usando gradle dependency
- Excepción "recurso no es un dibujable" mientras infla com.viewpagerindicator.TabPageIndicator
- Resaltar o subrayar seleccionado TabPageIndicator
- Cómo agregar una vista personalizada en ViewPager para un tutorial
- ViewPagerIndicator: Texto multilínea para el título de la pestaña?
- TabPageIndicator no estilo correctamente dentro de Fragmento
- No hay actividad Excepción al usar viewpager y fragmentos dentro de fragmentos
- Utilizar varios diseños en ViewPageIndicator
Puede agregar un ListFragment al FragmentPageAdapter (o FragmentStatePageAdapter) y agregar la función Pull-To-Refresh en él.
El repositorio Android-PullToRefresh tiene un ejemplo sobre ListFragment .
El sitio web de desarrolladores de Android tiene un código de ejemplo sobre cómo crear FragmentPagerAdapter o FragmentStatePagerAdapter .
También puede echar un vistazo a mi proyecto de prueba: https://github.com/caiguanhao/FSPAtest