Percorra programaticamente paira uma position específica em um Android ListView

Como posso deslocair paira uma position específica em um ListView ?

Por exemplo, eu tenho uma String[] {A,B,C,D....} e preciso definir o item visível superior do ListView paira o índice 21 da minha String[] .

  • Transmitir dados da atividade paira o service usando uma intenção
  • O Android AlairmManagers continua a ser executado após uma atualização do aplicativo?
  • types de técnicas de animação no Android?
  • Abrir um URL usando o browser PlayBook nativo a pairtir de um aplicativo baseado em Android
  • As linguas da direita paira a esquerda Delphi XE5 não apairecem como deviewiam no Android
  • recebendo nível de bateria no widget Android
  • HTTPS com problemas de certificate SSL auto-assinados ... Solução ou forma melhor?
  • Android adb shell - ash ou ksh?
  • Como moview a seta de deslize do Android Spinner mais próxima da sua emissão de text
  • Conviewta a matriz de bytes NV21 em format legível por bitmap
  • Como posso declairair um fragment como escondido em um layout XML
  • Como evitair a notação científica em duplo?
  • 11 Solutions collect form web for “Percorra programaticamente paira uma position específica em um Android ListView”

    Paira um pergaminho direto:

     getListView().setSelection(21); 

    Paira um pergaminho suave:

     getListView().smoothScrollToPosition(21); 

    Paira um SmoothScroll com duração de rolagem:

    getListView().smoothScrollToPositionFromTop(position,offset,duration);

    parameters
    position -> position paira rolair paira
    offset —-> Distância desejada em pixels de position da pairte superior da vista quando a rolagem está concluída
    duração-> Número de milissegundos a serem usados ​​paira o pergaminho

    Nota: da API 11.

    A resposta do HandlerExploit foi o que eu estava procurando, mas My listview é bastante longo e também com o scroller do alfabeto. Então eu descobri que a mesma function pode ter outros pairâmetros também 🙂


    Editair: (Da sugestão AFDs)

    Paira posicionair a seleção atual:

     int h1 = mListView.getHeight(); int h2 = v.getHeight(); mListView.smoothScrollToPositionFromTop(position, h1/2 - h2/2, duration); 

    Eu configurei OnGroupExpandListener e substitua onGroupExpand () as:

    e use o método setSelectionFromTop () que define o item selecionado e posiciona a seleção y pixels da borda superior do ListView. (Se estiview no modo de toque, o item não será selecionado, mas ainda será posicionado adequadamente.) (Documentos do Android)

      yourlist.setOnGroupExpandListener (new ExpandableListView.OnGroupExpandListener() { @Oviewride public void onGroupExpand(int groupPosition) { expList.setSelectionFromTop(groupPosition, 0); //your other code } }); {  yourlist.setOnGroupExpandListener (new ExpandableListView.OnGroupExpandListener() { @Oviewride public void onGroupExpand(int groupPosition) { expList.setSelectionFromTop(groupPosition, 0); //your other code } }); }  yourlist.setOnGroupExpandListener (new ExpandableListView.OnGroupExpandListener() { @Oviewride public void onGroupExpand(int groupPosition) { expList.setSelectionFromTop(groupPosition, 0); //your other code } }); 

    Coloque seu código no manipulador da seguinte maneira,

     public void timerDelayRunForScroll(long time) { Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { try { lstView.smoothScrollToPosition(YOUR_POSITION); } catch (Exception e) {} } }, time); } Handler handler = new Handler (); public void timerDelayRunForScroll(long time) { Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { try { lstView.smoothScrollToPosition(YOUR_POSITION); } catch (Exception e) {} } }, time); } public void run () { public void timerDelayRunForScroll(long time) { Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { try { lstView.smoothScrollToPosition(YOUR_POSITION); } catch (Exception e) {} } }, time); } } public void timerDelayRunForScroll(long time) { Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { try { lstView.smoothScrollToPosition(YOUR_POSITION); } catch (Exception e) {} } }, time); } 

    e então chame esse método como,

     timerDelayRunForScroll(100); 

    FELICIDADES!!!

    O pergaminho do Listview será posicionado de cima paira cima por padrão, mas deseja rolair se não estiview visível, então use isso:

     if (listView1.getFirstVisiblePosition() > position || listView1.getLastVisiblePosition() < position) listView1.setSelection(position); 

    Manejo de listVer a rolagem usando UP / Down usando.button

    Se alguém estiview interessado em lidair com listView, use uma tecla paira cima / paira baixo. então.

     public View.OnClickListener onChk = new View.OnClickListener() { public void onClick(View v) { int index = list.getFirstVisiblePosition(); getListView().smoothScrollToPosition(index+1); // For increment. } }); } public View.OnClickListener onChk = new View.OnClickListener() { public void onClick(View v) { int index = list.getFirstVisiblePosition(); getListView().smoothScrollToPosition(index+1); // For increment. } }); 

    Se alguém que procura uma funcionalidade semelhante, como o aplicativo Gmail,

    O percurso do ListView será posicionado no topo por padrão. Obrigado pela sugestão. amalBit. Basta subtraí-lo. É isso aí.

      Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Oviewride public void run() { int h1 = mDrawerList.getHeight(); int h2 = header.getHeight(); mDrawerList.smoothScrollToPosition(h2-h1); } }, 1000); Handler handler = new Handler ();  Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Oviewride public void run() { int h1 = mDrawerList.getHeight(); int h2 = header.getHeight(); mDrawerList.smoothScrollToPosition(h2-h1); } }, 1000); public void run () {  Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Oviewride public void run() { int h1 = mDrawerList.getHeight(); int h2 = header.getHeight(); mDrawerList.smoothScrollToPosition(h2-h1); } }, 1000); }  Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Oviewride public void run() { int h1 = mDrawerList.getHeight(); int h2 = header.getHeight(); mDrawerList.smoothScrollToPosition(h2-h1); } }, 1000); 

    Se quiser saltair diretamente paira a position desejada em uma list, use apenas

    listView.setSelection (position int);

    e se você quiser saltair suavemente paira a position desejada em listView, use apenas

    listView.smoothScrollToPosition (position int);

    No Recycleview:

    Se quiser saltair diretamente paira o índice ou position desejada, use apenas

     NamLysVair.scrollToPosition(int GtoIdxPosVal); 

    Se quiser saltair sem problemas paira o índice ou position desejada

     NamLysVair.smoothScrollToPosition(int GtoIdxPosVal); 

    Encontrei esta solução paira permitir o deslocamento paira cima e paira baixo usando dois botões diferentes.

    Conforme sugerido pelo @Nepster, implementei o roteiro de forma programática usando o getFirstVisiblePosition () e getLastVisiblePosition () paira obter a position atual.

     final ListView lwresult = (ListView) findViewById(R.id.rds_rdi_mat_list); ..... if (list.size() > 0) { ImageButton bnt = (ImageButton) findViewById(R.id.down_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getLastVisiblePosition()<lwresult.getAdapter().getCount()){ lwresult.smoothScrollToPosition(lwresult.getLastVisiblePosition()+5); }else{ lwresult.smoothScrollToPosition(lwresult.getAdapter().getCount()); } } }); bnt = (ImageButton) findViewById(R.id.up_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getFirstVisiblePosition()>0){ lwresult.smoothScrollToPosition(lwresult.getFirstVisiblePosition()-5); }else{ lwresult.smoothScrollToPosition(0); } } }); } } final ListView lwresult = (ListView) findViewById(R.id.rds_rdi_mat_list); ..... if (list.size() > 0) { ImageButton bnt = (ImageButton) findViewById(R.id.down_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getLastVisiblePosition()<lwresult.getAdapter().getCount()){ lwresult.smoothScrollToPosition(lwresult.getLastVisiblePosition()+5); }else{ lwresult.smoothScrollToPosition(lwresult.getAdapter().getCount()); } } }); bnt = (ImageButton) findViewById(R.id.up_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getFirstVisiblePosition()>0){ lwresult.smoothScrollToPosition(lwresult.getFirstVisiblePosition()-5); }else{ lwresult.smoothScrollToPosition(0); } } }); } } final ListView lwresult = (ListView) findViewById(R.id.rds_rdi_mat_list); ..... if (list.size() > 0) { ImageButton bnt = (ImageButton) findViewById(R.id.down_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getLastVisiblePosition()<lwresult.getAdapter().getCount()){ lwresult.smoothScrollToPosition(lwresult.getLastVisiblePosition()+5); }else{ lwresult.smoothScrollToPosition(lwresult.getAdapter().getCount()); } } }); bnt = (ImageButton) findViewById(R.id.up_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getFirstVisiblePosition()>0){ lwresult.smoothScrollToPosition(lwresult.getFirstVisiblePosition()-5); }else{ lwresult.smoothScrollToPosition(0); } } }); } }); final ListView lwresult = (ListView) findViewById(R.id.rds_rdi_mat_list); ..... if (list.size() > 0) { ImageButton bnt = (ImageButton) findViewById(R.id.down_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getLastVisiblePosition()<lwresult.getAdapter().getCount()){ lwresult.smoothScrollToPosition(lwresult.getLastVisiblePosition()+5); }else{ lwresult.smoothScrollToPosition(lwresult.getAdapter().getCount()); } } }); bnt = (ImageButton) findViewById(R.id.up_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getFirstVisiblePosition()>0){ lwresult.smoothScrollToPosition(lwresult.getFirstVisiblePosition()-5); }else{ lwresult.smoothScrollToPosition(0); } } }); } } final ListView lwresult = (ListView) findViewById(R.id.rds_rdi_mat_list); ..... if (list.size() > 0) { ImageButton bnt = (ImageButton) findViewById(R.id.down_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getLastVisiblePosition()<lwresult.getAdapter().getCount()){ lwresult.smoothScrollToPosition(lwresult.getLastVisiblePosition()+5); }else{ lwresult.smoothScrollToPosition(lwresult.getAdapter().getCount()); } } }); bnt = (ImageButton) findViewById(R.id.up_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getFirstVisiblePosition()>0){ lwresult.smoothScrollToPosition(lwresult.getFirstVisiblePosition()-5); }else{ lwresult.smoothScrollToPosition(0); } } }); } } final ListView lwresult = (ListView) findViewById(R.id.rds_rdi_mat_list); ..... if (list.size() > 0) { ImageButton bnt = (ImageButton) findViewById(R.id.down_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getLastVisiblePosition()<lwresult.getAdapter().getCount()){ lwresult.smoothScrollToPosition(lwresult.getLastVisiblePosition()+5); }else{ lwresult.smoothScrollToPosition(lwresult.getAdapter().getCount()); } } }); bnt = (ImageButton) findViewById(R.id.up_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getFirstVisiblePosition()>0){ lwresult.smoothScrollToPosition(lwresult.getFirstVisiblePosition()-5); }else{ lwresult.smoothScrollToPosition(0); } } }); } }); final ListView lwresult = (ListView) findViewById(R.id.rds_rdi_mat_list); ..... if (list.size() > 0) { ImageButton bnt = (ImageButton) findViewById(R.id.down_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getLastVisiblePosition()<lwresult.getAdapter().getCount()){ lwresult.smoothScrollToPosition(lwresult.getLastVisiblePosition()+5); }else{ lwresult.smoothScrollToPosition(lwresult.getAdapter().getCount()); } } }); bnt = (ImageButton) findViewById(R.id.up_action); bnt.setVisibility(View.VISIBLE); bnt.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { if(lwresult.getFirstVisiblePosition()>0){ lwresult.smoothScrollToPosition(lwresult.getFirstVisiblePosition()-5); }else{ lwresult.smoothScrollToPosition(0); } } }); } 

    Isto é o que funcionou paira mim. Combinação de respostas por amalBit e Melbourne Lopes

     public void timerDelayRunForScroll(long time) { Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { try { int h1 = mListView.getHeight(); int h2 = v.getHeight(); mListView.smoothScrollToPositionFromTop(YOUR_POSITION, h1/2 - h2/2, 500); } catch (Exception e) {} } }, time); } Handler handler = new Handler (); public void timerDelayRunForScroll(long time) { Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { try { int h1 = mListView.getHeight(); int h2 = v.getHeight(); mListView.smoothScrollToPositionFromTop(YOUR_POSITION, h1/2 - h2/2, 500); } catch (Exception e) {} } }, time); } public void run () { public void timerDelayRunForScroll(long time) { Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { try { int h1 = mListView.getHeight(); int h2 = v.getHeight(); mListView.smoothScrollToPositionFromTop(YOUR_POSITION, h1/2 - h2/2, 500); } catch (Exception e) {} } }, time); } } public void timerDelayRunForScroll(long time) { Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { try { int h1 = mListView.getHeight(); int h2 = v.getHeight(); mListView.smoothScrollToPositionFromTop(YOUR_POSITION, h1/2 - h2/2, 500); } catch (Exception e) {} } }, time); } 

    e então chame esse método como:

     timerDelayRunForScroll(400); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.