Android 如何更改同一可见项中gridview的列数。安卓

Android 如何更改同一可见项中gridview的列数。安卓,android,gridview,Android,Gridview,我正在编写一个android应用程序,其中我使用网格视图显示一些项目。我想为用户提供一个可配置的视图,用户可以通过单击浮动操作按钮更改活动中的列数。我正在更改列,不使用 gridView.setNumColumns(selectedColumnNo); 这工作正常,但问题是如果用户在滚动后更改了no of column,则第一个可见位置被设置为数组列表的第一项,因此用户必须再次滚动视图。谁能告诉我哪里做错了。或者这是正确的方法,或者我应该使用不同的方法 一段代码片段会很有帮助 谢谢 更新::

我正在编写一个android应用程序,其中我使用网格视图显示一些项目。我想为用户提供一个可配置的视图,用户可以通过单击浮动操作按钮更改活动中的列数。我正在更改列,不使用

gridView.setNumColumns(selectedColumnNo);
这工作正常,但问题是如果用户在滚动后更改了no of column,则第一个可见位置被设置为数组列表的第一项,因此用户必须再次滚动视图。谁能告诉我哪里做错了。或者这是正确的方法,或者我应该使用不同的方法

一段代码片段会很有帮助 谢谢 更新:: 目前我正在使用下面的代码片段

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的第一个元素,然后调用
setNumColumns()
,保存网格视图的第一个可见位置:

int firstPosition = gridView.getFirstVisiblePosition();
然后,在更改列数后,将该整数传递给
setSelection()


与直觉相反,“选择”与“激活”不是一回事。它将确保视图显示在屏幕上,但不会以任何其他方式明显影响视图。

非常感谢@sigmabeta它解决了我的问题,但现在我得到了另一个解决方案。我已经更新了问题,请看一下。什么是
pr
?我不明白你想用这段新代码做什么,而且听起来很像是超出了原来问题的范围。我正在努力跟踪“晶圆厂”按钮被按下的次数。如果按奇数次,则列号为1。否则,第2栏的内容将被删除。这与您原来的问题无关,坦率地说,您犯的错误是非常基本的;你完全有能力弄明白。如果你绝对不能,你应该开始一个新的问题。谢谢你的时间。我会设法弄明白的。:)
gridView.setSelection(firstPosition);