Android 动态更改GridLayoutManager的列数

Android 动态更改GridLayoutManager的列数,android,gridview,android-adapter,android-gridlayout,Android,Gridview,Android Adapter,Android Gridlayout,实际上,我在我的应用程序中使用了一个GridLayoutManager,它有两列,我希望根据使用的视图类型有一列 以下是我在片段的方法“onCreateView()”中的代码: // Recycler view for users usersList = (RecyclerView) mView.findViewById(R.id.usersList); // Layout manager (grid of users layoutManager = new GridLayoutManager

实际上,我在我的应用程序中使用了一个GridLayoutManager,它有两列,我希望根据使用的视图类型有一列

以下是我在片段的方法“onCreateView()”中的代码:

// Recycler view for users
usersList = (RecyclerView) mView.findViewById(R.id.usersList);

// Layout manager (grid of users
layoutManager = new GridLayoutManager(mContext, 2);
usersList.setLayoutManager(layoutManager);

// ArrayList of users
users = new ArrayList<User>();

// Set the adapter for the list of users
mHomeListAdapter = new HomeListAdapter(getActivity(), users);
usersList.setAdapter(mHomeListAdapter);
因此,当使用视图“TYPE_PREMIUM”时,我希望显示一个按钮(在一列中),并为其他结果显示一个普通的gridview(两列)

有可能这样做吗


谢谢

如果我理解你的问题,你想让高级类型视图跨越2列而不是1列?这可以通过设置自定义设置来实现。

我使用了一个复选框来更改布局管理器列。 您应该使用它来更改GridLayoutManager列。 以下是代码:

 checkBox = findViewById(R.id.change_manager);

    checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (checkBox.isChecked()) {
                layoutManager.setSpanCount(2);
                isLayoutChange = true;
            } else {
                isLayoutChange = false;
                layoutManager.setSpanCount(3);
            }
        }
    });
boolean用于检查onResume()onRestart()onPause()方法中的layoutManager更改。像这样使用它:

  if (isLayoutChange) {
        layoutManager.setSpanCount(2);
    } else {
        layoutManager.setSpanCount(3);
    }
 checkBox = findViewById(R.id.change_manager);

    checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (checkBox.isChecked()) {
                layoutManager.setSpanCount(2);
                isLayoutChange = true;
            } else {
                isLayoutChange = false;
                layoutManager.setSpanCount(3);
            }
        }
    });
  if (isLayoutChange) {
        layoutManager.setSpanCount(2);
    } else {
        layoutManager.setSpanCount(3);
    }