我有一个画廊,它允许用户浏览画廊,选择图像作为他们的选择,并继续浏览画廊而不更改该选择。这通过使用 onItemSelected 来查看他们正在选择的图像(即单击)是否是已经选择的图像(通过画廊的动作)。所以:
- 用户在画廊中前后移动。
- 用户决定他们喜欢的图像并将画廊集中在它上面。
- 用户单击图像,它被“选中”并被赋予绿色边框。
- 用户可以继续在图库中前后移动,而不会自动“选择”当前居中的图像。
这可以。但是,我现在尝试在选择图像时允许方向更改,我发现在所有 onConfigChanged 代码执行后,在 Gallery 上调用了 onItemSelected。
所以 onConfigChange 我设置了参数(即,在方向改变之前画廊的索引),然后我调用了我的 initialiseUI 方法。这成功执行并设置了它需要的一切,包括将 Gallery 定位在它在方向更改之前定位的相同索引处。但随后在居中的图像上调用 onItemSelected。这会导致选择居中的图像作为他们的选择(绿色边框等),而无需用户单击它。
我尝试使用布尔标志“configIsChanging”来仅在 configIsChanging 为 false 时执行 onItemSelected 代码。不幸的是,这似乎不起作用,因为 onItemSelected 在 onConfigChange 完成后被调用,并且到那时标志已被重置为 false。
@Override
public void onConfigurationChanged(Configuration newConfig) {
configChanging = true;
tempConfigDisplayedIndex = mGallery.getSelectedItemPosition();
super.onConfigurationChanged(newConfig);
setContentView(R.layout.take_questionnaire);
initialiseUI();
configChanging = false;
}
有人对流氓 onItemSelected 事件有任何经验吗?有任何想法吗?如果需要,我可以发布更多代码。非常感谢您的帮助。