Pergunta

estou a usar https://github.com/etsy/AndroidStaggeredGrid/ no meu projeto.Tudo funciona bem, exceto que não consigo rolar para uma posição/item específico à vontade.

O que tentei até agora (tudo que consegui pensar, incluído em um trecho de código para você ver):

final StaggeredGridView gv = (StaggeredGridView) ma.findViewById(R.id.photosList);
gv.setChoiceMode(StaggeredGridView.CHOICE_MODE_SINGLE);
gv.setFocusable(true);
gv.clearFocus();
gv.post( new Runnable() {
    @Override
    public void run() {

        // #1 approach
        gv.requestFocusFromTouch();
        gv.smoothScrollToPosition(index);

        // #2 approach
        gv.setSelection(index);

        View v = gv.getChildAt(index);
        if (v != null) {
            // #3 approach
            v.requestFocus();
        }
        //v.requestFocusFromTouch();
        Utils.log("scroll to " + index);
        gv.requestLayout();
    }
});

Nada parece funcionar e estou começando a pensar que essa visualização tem algum tipo de bug relacionado ao meu problema.Existe alguém que possa me ajudar no assunto?

Foi útil?

Solução

Descobri que não consegui rolar para um local específico; no entanto, descobri que consegui restaurar o estado do gridview.Em meu aplicativo, tive que implementar um mecanismo de backstack personalizado e você pode passar o estado do qual pode obter:

Parcelable state = mgridView.onSaveInstanceState();

O estado é Parcelable, então consegui colocarParcelable em uma intenção e, em seguida, recuperá-lo e restaurar o estado conforme necessário, assim

if(state != null) {
    mgridView.onRestoreInstanceState(state);
}

Ao restaurar o estado, ele restaura exatamente a posição anterior na grade.

Espero que isso ajude alguém que esteja enfrentando esse problema!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top