XRecyclerView的点击切换布局

一个按钮切换布局

  • 布局效果
    点击图片切换布局
    在这里插入图片描述
    布局二
    在这里插入图片描述

  • 代码实现
    很容易想象我们只需要在Adapter中实现两种布局的加载和两种布局的判断
    适配器中添加

    /**
     * 切换布局
     */
    public final static int LINEAR_TYPE = 0;//线性
    public final static int GRID_TYPE = 1;//网格
    private int viewType = LINEAR_TYPE;
     @Override
    public int getItemViewType(int position) {
        return viewType;
    }

    //设置item的视图类型
    public void setViewType(int viewType) {
        this.viewType = viewType;
    }
//onCreateViewHolder方法中加载布局改变为两种
 View view = null;
        if (viewType == LINEAR_TYPE) {//通过第二个参数viewType判断选用的视图
            view = View.inflate(viewGroup.getContext(), R.layout.item_list2, null);//加载item布局
        } else {
            view = View.inflate(viewGroup.getContext(), R.layout.item_list, null);//加载item布局
        }
        MyHolder myHolder = new MyHolder(view);

Activity中

 //我这里提成全局
 linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        

那个图片(或者按钮)的点击事件

 menu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!isGrid){
                    /*isGrid = true;
                    mAdapter.setViewType(GoodsListAdapter.GRID_TYPE);
                    mRecyclerView.setLayoutManager(mGridManager);*/
                    isGrid = true;
                    phoneAdapter.setViewType(PhoneAdapter.GRID_TYPE);
                    xrecyclerView.setLayoutManager(layoutManager);
                }else{
                    isGrid = false;
                    phoneAdapter.setViewType(PhoneAdapter.LINEAR_TYPE);
                    xrecyclerView.setLayoutManager(linearLayoutManager);
                }
            }
        });

记得声明变量

 private boolean isGrid = false ;
  • 布局
    (自己定义就好了…)

猜你喜欢

转载自blog.csdn.net/qq_43589739/article/details/85013246