我在我的项目中使用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();
}
});
似乎什么都没有用,我开始认为这个观点有一些与我的问题有关的错误。是否有人可以帮我解决这个问题?
答案 0 :(得分:2)
我发现我无法滚动到特定位置,但是,我确实发现我能够恢复gridview的状态。在我的应用程序中,我必须实现一个自定义后台堆栈机制,你可以传递你可以获得的状态:
if(state != null) {
mgridView.onRestoreInstanceState(state);
}
状态是一个Parcelable,所以我能够将intentParcelable放入intent中,然后根据需要检索它并恢复状态,就像这样
<img>
恢复状态后,它会准确恢复网格中的上一个位置。
希望这有助于其他任何人面对这个问题!