2

我在我的项目中使用https://github.com/etsy/AndroidStaggeredGrid/ 。一切正常,除了我不能随意滚动到特定位置/项目。

到目前为止我所尝试的(我能想到的一切,都包含在一段代码中供您查看):

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

似乎没有任何效果,我开始认为这个视图有某种与我的问题相关的错误。有没有人可以在这件事上帮助我?

4

1 回答 1

1

我发现我无法滚动到特定位置,但是,我确实发现我能够恢复 gridview 的状态。在我的应用程序中,我必须实现一个自定义的回栈机制,并且您可以传递可以从中获取的状态:

Parcelable state = mgridView.onSaveInstanceState();

状态是 Parcelable,所以我能够将 Parcelable 放入一个意图中,然后根据需要检索它并恢复状态,就像这样

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

恢复状态后,它会准确地恢复网格中的先前位置。

希望这可以帮助其他面临此问题的人!

于 2015-05-21T01:56:45.063 回答