使用 GridLayoutManager (RecyclerView) 将最后一个网格设置为全宽

Set last grid to full width using GridLayoutManager (RecyclerView)

我正在使用 RecyclerViewGridLayoutManager 以网格模式显示一些项目。它运行良好,在网格内的 2 列中显示项目。

但是当项目的数量是奇数时,我希望最后一个项目必须是全宽的(与 RecyclerView 的宽度相同)。

是否可以使用 GridLayoutManager 或者我必须构建自定义设计?

请帮忙。

您可以使用 GridLayoutManager

中的 layoutManager.setSpanSizeLookup 方法

这是使用方法

final GridLayoutManager layoutManager = new GridLayoutManager(context, 2);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                if (mAdapter != null) {
                    switch (mAdapter.getItemViewType(position)) {
                        case 1:
                            return 1;
                        case 0:
                            return 2; //number of columns of the grid
                        default:
                            return -1;
                    }
                } else {
                    return -1;
                }
            }
        });

现在您必须确定 adapter

中的 viewType
@Override
public int getItemViewType(int position) {
    return (position == getItemCount() - 1) ? 0 : 1; // If the item is last, `itemViewType` will be 0
}

继续构建更好的应用!!