Não, não explica a lista rolar pro final independente da posição salva antes da rotação.
Eu conferi com o logcat e ele salva normalmente a primeira posição, vamos supor que a primeira posição eh a 90 de uma lista com 200:
De P pra L, blz, ele restaura normal. No contrário, ao retornar da orientação é o ultimo item que esta visivel.
Em sexta-feira, 27 de junho de 2014 16h46min32s UTC-3, Eduardo Gielamo Oliveira escreveu:
-- Eu conferi com o logcat e ele salva normalmente a primeira posição, vamos supor que a primeira posição eh a 90 de uma lista com 200:
De P pra L, blz, ele restaura normal. No contrário, ao retornar da orientação é o ultimo item que esta visivel.
Em sexta-feira, 27 de junho de 2014 16h46min32s UTC-3, Eduardo Gielamo Oliveira escreveu:
Existe uma explicação. A altura da lista muda de uma orientação p/ outra - daí o primeiro e o último item visível entre as orientações sempre vão ser diferentes. Tente fazer uns cálculos "mais avançados", do tipo:posição atual = última posição visível - primeira posição visívelÉ um chute, não sei se funciona.
2014-06-27 16:37 GMT-03:00 Matheus Silva <informa...@gmail.com>:Digo com 90% de ctz que nao vai funcionar pq eu testei agora a pouco isso no fragment...... e sabe o que acontece?// saveinstance
outState.putInt(LISTSTATE, listview.getFirstVisiblePosition ());
// onCreateView
if (savedInstanceState != null) {
final int position = savedInstanceState.getInt(LISTSTATE , -1);
if (position != -1) {
listview.post(new Runnable() {
@Override
public void run() {
listview.setSelection(position);
}
});
}
}
De portrait pra landscape ele funciona direitinho, mas de landscape pra portrait ele vai pra ultima posição. Qual seria a maldita explicação pra isso?
Puta merda viu, eh por isso que eu desanimo tanto de programar pra android.
Em sexta-feira, 27 de junho de 2014 15h55min57s UTC-3, Eduardo Gielamo Oliveira escreveu:Cara, desista do onSaveInstanceState do ListView e faça no braço:no onSaveInstanceState da activity:outState.putInt("listIndex", listView.getFirstVisiblePosition) no onCreate / onRestoreInstanceStatelistView.setTranscriptMode(...); listView.setSelection(state.getInt("listIndex", 0)); Não é muito elegante, mas deve funcionar. :)2014-06-27 15:37 GMT-03:00 Matheus Silva <informa...@gmail.com>:
Ja tentei salvar o primeiro, o ultimo, o estado total, mas depois de tudo isso comecei a perceber que a minha maldição eh o transcript mode. Quando eu seto ele, a lista vai direto pro final.
Tentei agora a pouco fazer o seguinte:if (savedInstanceState != null
&& savedInstanceState.getParcelable (LISTSTATE) != null) {
listview.onRestoreInstanceState (savedInstanceState
.getParcelable(LISTSTATE));
} else {
listview.setTranscriptMode(ListView .TRANSCRIPT_MODE_NORMAL);
}
Mas me parece que esse tal de listview.onSaveInstanceState() não salva o transcript mode, o que fez com que da primeira rotação em diante a lista nao fosse mais transcript mode.
Ateh agora a visão que eu tenho eh que esse onSaveInstanceState() nao serve pra nada.
Em sexta-feira, 27 de junho de 2014 10h35min04s UTC-3, Eduardo Gielamo Oliveira escreveu:Olá Matheus,já tentou salvar o estado da primeira e da última posição visível?Att,EduardoEm 26/06/2014 17:12, "Matheus Silva" <informa...@gmail.com> escreveu:
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroupsPercebi que ao desativar o transcript mode, a lista é recuperada exatamente na mesma posição em que estava antes da rotação, até com diferença dos pixels. O que eu acho um mistério a menos que o adapter em si guarde essa posição.--
Mas nada disso muda o fato de que eu preciso de transcript pq eh um chat. O que fazer?
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group..com .--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/d/optout .
--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com .
For more options, visit https://groups.google.com/d/optout .
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.






0 comentários:
Postar um comentário