Question

J'utilise https://github.com/etsy/androidscaggerdgrid/ dans mon projet.Tout fonctionne bien, sauf que je ne peux pas le faire défiler à une position / élément spécifique à volonté.

Qu'est-ce que j'ai essayé jusqu'à présent (tout ce que je pouvais penser, ci-joint dans un seul morceau de code à regarder):

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();
    }
});

Rien ne semble fonctionner et je commence à penser que ce point de vue a une sorte de bug liée à mon problème.Y a-t-il quelqu'un qui peut m'aider dans la matière?

Était-ce utile?

La solution

J'ai trouvé que je n'ai pas pu faire défiler jusqu'à un endroit spécifique, cependant, j'ai trouvé que je pouvais restaurer l'état de la grille.Dans ma candidature, j'ai dû mettre en place un mécanisme de pile à dos personnalisé et vous pouvez transmettre l'état que vous pouvez obtenir de:

Parcelable state = mgridView.onSaveInstanceState();

L'état est un établi, donc j'ai pu pu posterparcelable dans une intention, puis la récupérer et restaurer l'état au besoin, comme si

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

Lors de la restauration de l'état, il restaure la position précédente dans la grille exactement.

J'espère que cela aide toute autre personne face à ce problème!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top