我正在使用 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();
    }
});
.

似乎没有什么工作,我开始认为这个观点有一些与我的问题有关的错误。有人可以帮助我吗?

有帮助吗?

解决方案

我发现我无法滚动到特定位置,但是,我确实发现我能恢复网格景观的状态。在我的应用程序中,我必须实现自定义背面堆栈机制,并且可以通过它的状态:

Parcelable state = mgridView.onSaveInstanceState();
.

状态是一个包裹,所以我能够在意图中换来,然后根据需要检索它并恢复状态,如

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

在恢复状态时,它确切地恢复了网格中的先前位置。

希望这有助于其他人面临这个问题!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top