一个按钮切换布局
-
布局效果
点击图片切换布局
布局二
-
代码实现
很容易想象我们只需要在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);
staggeredGridLayoutManager = 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);
}
}
});
记得声明变量(Activity中) 切记!!!
private boolean isGrid = false ;
- 布局
(自己定义就好了…)