PagerAdapter position de départ

J'utilise l'exemple suivant pour impliment mon viewPager: http://code.google.com/p/viewpagerexample/issues/list

Le problème avec cet exemple est que je ne peux pas comprendre comment définir ma position de départ, la position de départ par défaut est 0. En gros, je ne peux pas contrôler si une vue disponible est à gauche ou à droite.

  • Icône dans le menu qui ne s'affiche pas dans Android
  • Télécharger le fichier apk de S3 à l'aide de DownloadManager
  • Autorisation de l'API de Youtube 403 Erreur interdite
  • Gradient circulaire dans Android
  • Un site Web (HTML5, JavaScript) peut-il accéder à une liste de contacts d'un appareil mobile (Android / iPhone), des fichiers SDCard
  • Comment puis-je créer un élément de menu Android à l'aide de l'icône de réglage Android
  • Existe-t-il un moyen de contrôler la position actuelle de View du centre? Y a-t-il une meilleure façon de le faire? Est-il possible de le rendre circulaire?

  • Envoyer une action média sur Android
  • Quelle est la hauteur par défaut sur Androids TabLayout
  • Impossible de trouver des outils dans SDK
  • Transformation automatique du code dex de Android
  • Streaming d'audio AAC avec Android
  • Soft Keyboard cache la barre d'action
  • 8 Solutions collect form web for “PagerAdapter position de départ”

    J'ai trouvé un moyen de définir sa position, ce qui se fait en dehors de la classe:

    awesomePager = (ViewPager) findViewById(R.id.awesomepager); awesomePager.setAdapter(awesomeAdapter); awesomePager.setCurrentItem(CurrentPosition); 

    Et cela peut être limité en calculant la quantité d'articles auxquels je souhaite y participer

    J'ai remarqué que si vous recréez Activité (changement d'orientation) avec ViewPager ayant FragmentStatePagerAdapter, l'Adaptateur réutilisera ses Fragments. La façon de l'arrêter est:

     @Override public void onSaveInstanceState(Bundle savedInstanceState) { if (viewPager != null) { // before screen rotation it's better to detach pagerAdapter from the ViewPager, so // pagerAdapter can remove all old fragments, so they're not reused after rotation. viewPager.setAdapter(null); } super.onSaveInstanceState(savedInstanceState); } 

    Mais ensuite après Activity Activity ViewPager alwayes ouvre d'abord la page 0 et setCurrentItem (CurrentPosition); Ne fonctionne pas. Correction pour cela est en train de changer la page après le délai:

     new Handler().postDelayed(new Runnable() { @Override public void run() { viewPager.setCurrentItem(newPosition); } }, 100); 

    J'ai rencontré un problème par lequel, si je définissais l'élément actuel avant de configurer l'adaptateur, le premier élément que je retrouverais sera toujours celui de la position 0.

    Assurez-vous de faire:

     awesomePager.setAdapter(awesomeAdapter); awesomePager.setCurrentItem(CurrentPosition); 

    et pas:

     awesomePager.setCurrentItem(CurrentPosition); awesomePager.setAdapter(awesomeAdapter); 

    J'ai un rang de taille de plus de 1000 et dans le viseur dymanic, je faisais face à leftswipe coincé sur Firstload. Le code ci-dessous a résolu ceci et a entraîné un défilement uniforme:

     @Override onResume(){ super.onResume(); viewPager.setCurrentItem(newPosition); } 

    Pour commencer avec le dernier fragment, je l'ai fait:

     PagerAdapter pagerAdapter = new PagerAdapter(); viewPager.setAdapter(pagerAdapter); viewPager.setCurrentItem(pagerAdapter.getCount() - 1); 

    J'utilise 3 fragments et, lors du démarrage de mon application, le deuxième fragment ( moyen ) sera affiché par défaut. J'utilise simplement la fonction onResume et tout fonctionne bien.

     @Override protected void onResume() { super.onResume(); m_viewPager.setCurrentItem(1); } 
     @Override public Object instantiateItem(ViewGroup container, int position) { View currentPage = null; switch(position){ case 0: currentPage = LayoutInflater.from(context).inflate(R.layout.page0, null) break; case 1: currentPage = LayoutInflater.from(context).inflate(R.layout.page1, null) ///////////// This page will be default //////////////////// ((ViewPager)container).setCurrentItem(position); //////////////////////////////////////////////////////////// break; case 2: currentPage = LayoutInflater.from(context).inflate(R.layout.page2, null) break; return currentPage; } 

    J'ai rencontré le même problème. Lorsque j'initialise ViewPager, la position de l'indicateur était 0. Cela peut dépendre de la quantité de calcul pour le contenu de Pager. J'utilise ViewTreeObserver comme ci-dessous.

     mGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { mViewPager.setCurrentItem(newPosition); removeOnGlobalLayoutListener(mSlidingTabLayout.getViewTreeObserver(), mGlobalLayoutListener); } }; mSlidingLayout.getViewTreeObserver().addOnGlobalLayoutListener(mGlobalLayoutListener); 

    et,

     private void removeOnGlobalLayoutListener(ViewTreeObserver observer, ViewTreeObserver.OnGlobalLayoutListener listener) { if (observer == null) return; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { observer.removeGlobalOnLayoutListener(listener); } else { observer.removeOnGlobalLayoutListener(listener); } } 

    De cette façon, ne jamais déranger le délai d'attente.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.