我正在编写一个Android应用程序,我正在使用网格视图来显示一些项目。我想为用户提供一个可配置的视图,他们可以通过单击浮动操作按钮来更改活动中的列数。我正在使用
更改列gridView.setNumColumns(selectedColumnNo);
这工作正常但问题是如果用户在滚动后将第一个可见位置设置为数组列表的第一项后更改了列,则用户必须再次滚动视图。有人可以告诉我我做错了什么。或者这是正确的方法,还是我应该采用不同的方法。
代码段会很有帮助 谢谢。 的更新:: 目前我正在使用波纹管片段
findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int firstPosition = gv.getFirstVisiblePosition();
if(gv.getNumColumns()==2)
{
gv.setNumColumns(1);
gv.setSelection(firstPosition);
}
else {
gv.setNumColumns(2);
gv.setSelection(firstPosition);
}
}
});
现在问题在于每个第4个开关网格视图都显示了arraylist的第一个元素
答案 0 :(得分:0)
在致电setNumColumns()
之前,请保存GridView的第一个可见位置:
int firstPosition = gridView.getFirstVisiblePosition();
然后,在更改列数后,将该整数传递给setSelection()
:
gridView.setSelection(firstPosition);
"选择",反直觉,与"激活"不同。它将确保视图在屏幕上,但不会以任何其他方式明显影响它。