Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将RecyclerView LayoutManager从列表更改为网格?

我正在使用一个ViewPager,其中有一个RecyclerView,在这个RecyclerView中,我想将LayoutManager从列表更改为网格

我已经实现了以下代码:

 void setLManager(boolean managerL){
    GridLayoutManager glManager = new GridLayoutManager(viewPager.getContext(), 2);
      if (mData.size() % 2 != 0) {
          final int item = mData.size() - 1;
          glManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
              @Override
              public int getSpanSize(int position) {
                  return position == item ? 2 : 1;
              }
          });
      }
    LinearLayoutManager lLManager = new LinearLayoutManager(viewPager.getContext());

    recycler.setLayoutManager(managerL ? lLManager : glManager);
    sAdapter.notifyDataSetChanged();
    recycler.setAdapter(sAdapter);
}

在RecyclerView的onCreateViewHolder上,我有以下代码:

@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View v;

        int layout = 0;

        if(viewType == Util.LIST){

            layout = R.layout.item_list;

        }else {

            layout = R.layout.item_grid;

        }
        v = LayoutInflater.from(mContext).inflate(layout, parent, false);
        viewHolder = new RecyclerView.ViewHolder(v);
        return viewHolder; 
}

我通过一个浮动按钮从列表更改为网格,更改“managerL”的值(这是一个布尔变量),因此,当我按下按钮时,布局更改(从R.layout.item_List更改为R.layout_网格,反之亦然),但布局管理器仍显示LinearLayoutManager

我想知道,为什么我的回收服务管理员没有改变


共 (0) 个答案