Android仿淘宝列表和网格布局切换
16lz
2021-01-26
1.使用recyclerview实现网格和列表切换,先看效果图
2.首先是两个不同item的布局,这没什么,各位可以替换为自己的布局
分别叫item_taobao_hot_goods和item_taobao_hot_goods_list
3.recyclerview适配器(关键代码),主要是通过重写getItemViewType方法。
private int TYPE_1 = 1;//网格private int TYPE_2 = 2;//列表private boolean isTable = true;//在activity中设值 //对activity暴露方法改变布局public void switchStyle(boolean isTable) { this.isTable = isTable;// notifyItemRangeChanged(0,this.beanList.size());如果只是改变布局,像我这种,无需调用该方法。(如果需要改变数据,需要在onBInd方法中通过type修改数据) }
@NonNull@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int position) { int itemViewType = getItemViewType(position); View view = null; if (itemViewType == TYPE_1) { view = inflater.inflate(R.layout.item_taobao_hot_goods, viewGroup, false); } else { view = inflater.inflate(R.layout.item_taobao_hot_goods_list, viewGroup, false); } ViewHolder viewHolder = new ViewHolder(view); return viewHolder;}
@Overridepublic int getItemViewType(int position) { if (isTable) { return TYPE_1; } else { return TYPE_2; }}
4.acitvity代码
RecyclerView recyclerView;
private GridLayoutManager gridLayoutManager;
private RecyclerViewAdapter adapter;
gridLayoutManager = new GridLayoutManager(mContext, 2);//设置初始布局为网格,即两列recyclerView.setLayoutManager(gridLayoutManager);
//点击事件
gridLayoutManager.setSpanCount(1);//设为1列,即列表
adpater.switchStyle(false);
gridLayoutManager.setSpanCount(2);//设为2列,即网格
adpater.switchStyle(false);
更多相关文章
- Android(安卓)一条竖线或横线、画边框
- android RecyclerView局部刷新
- Android(安卓)ApiDemos示例解析(55):Graphics->BitmapMesh
- Android(安卓)性能优化的一些方法
- Android(安卓)Studio插件Gsonformat使用
- Android笔记汇总
- android中ActionBar的覆盖叠加
- Inflater与findViewById()区别
- Android(安卓)studio Xposed框架Hook小试