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 <informatheus02@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-...@googlegroups.com.Percebi 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.--
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.
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