Android仿淘宝列表和网格布局切换

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
@Override
public 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;
}
@Override
public 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);

猜你喜欢

转载自blog.csdn.net/qq_26014653/article/details/85077251