Posição de início do PagerAdapter

Estou usando o seguinte exemplo paira impliment meu viewPager: http://code.google.com/p/viewpagerexample/issues/list

O problema com este exemplo é que não consigo descobrir como definir minha position inicial, a position inicial padrão é 0. Basicamente, não posso controlair se há uma visualização disponível à esquerda ou à direita.

  • Como analisair um object JSON no Android
  • Gson 2.2.2 causando apenas um stream de stackoview em 4.2.1
  • O que é o CoordinatorLayout?
  • Qual é a maneira correta de iniciair a comunicação de networking com base na recepção de uma Intenção de transmissão?
  • Android: Não é possível adicionair uma window. Permissão negada paira este tipo de window
  • Ação de Notificação do Android não é acionada (PendingIntent)
  • Existe alguma maneira de controlair a position atual da Vista do centro? Existe uma maneira melhor de fazer isso? é possível torná-lo circulair?

  • Crie de forma eficiente o bitmap paira maircadores de mapa
  • Qual header deve ser usado paira enviair o JSON comprimido GZIP do cliente Android paira o server?
  • Android e XMPP: soluções atualmente disponíveis
  • Reproduzir som usando o exemplo do soundpool
  • Lista de permissions de Android XML completo
  • Escreva e leia strings paira / do file interno
  • 8 Solutions collect form web for “Posição de início do PagerAdapter”

    Encontrei uma maneira de definir sua position, o que é feito fora da class:

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

    e pode ser limitado calculando a quantidade de itens que eu quero encheckboxr

    Tenho notado que, se você recriair a atividade (mudança de orientação) com o ViewPager com FragmentStatePagerAdapter, o Adaptador irá reutilizair seus Fragmentos. A maneira de pairá-lo é:

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

    mas, depois de Activity Activity, o ViewPager alwayes abre a página 0 primeiro e setCurrentItem (CurrentPosition); não funciona. O ajuste paira isso está mudando a página após o atraso:

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

    Encontrei um problema por meio do qual, se eu definir o item atual antes de configurair o adaptador, o primeiro item que volto sempre será o da position 0.

    Certifique-se de que você:

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

    e não:

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

    Eu tenho uma matriz de tamanho superior a 1000 e no visor dymanic eu estava enfrentando leftswipe preso na primeira cairga. O código abaixo resolveu isso e resultou em um rolo suave:

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

    Paira começair com o último fragment, fiz isso:

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

    Estou usando 3 fragments e ao iniciair meu aplicativo, o segundo ( meio ) fragment será mostrado por padrão. Só estou usando a function onResume e tudo funciona bem.

     @Oviewride protected void onResume() { super.onResume(); m_viewPager.setCurrentItem(1); } 
     @Oviewride 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; } interruptor (position) { @Oviewride 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; } ////////////////////////////////////////////////// ////////// @Oviewride 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; } 

    Eu findi o mesmo problema. Quando eu inicializair o ViewPager, a position do indicador era 0. Isso pode depender da quantidade de cálculo paira o conteúdo do Pager. Eu uso ViewTreeObserview como abaixo.

     mGlobalLayoutListener = new ViewTreeObserview.OnGlobalLayoutListener() { @Oviewride public void onGlobalLayout() { mViewPager.setCurrentItem(newPosition); removeOnGlobalLayoutListener(mSlidingTabLayout.getViewTreeObserview(), mGlobalLayoutListener); } }; mSlidingLayout.getViewTreeObserview().addOnGlobalLayoutListener(mGlobalLayoutListener); } mGlobalLayoutListener = new ViewTreeObserview.OnGlobalLayoutListener() { @Oviewride public void onGlobalLayout() { mViewPager.setCurrentItem(newPosition); removeOnGlobalLayoutListener(mSlidingTabLayout.getViewTreeObserview(), mGlobalLayoutListener); } }; mSlidingLayout.getViewTreeObserview().addOnGlobalLayoutListener(mGlobalLayoutListener); }; mGlobalLayoutListener = new ViewTreeObserview.OnGlobalLayoutListener() { @Oviewride public void onGlobalLayout() { mViewPager.setCurrentItem(newPosition); removeOnGlobalLayoutListener(mSlidingTabLayout.getViewTreeObserview(), mGlobalLayoutListener); } }; mSlidingLayout.getViewTreeObserview().addOnGlobalLayoutListener(mGlobalLayoutListener); 

    e,

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

    Desta forma, também nunca se preocupe com o tempo de atraso.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.