首页 > 解决方案 > 从 recyclerView 网格布局管理器中删除最后一项装饰

问题描述

我有一个recyclerViewGridLayoutManager想在垂直水平模式下删除最后一个分隔线。

在此处输入图像描述

我试图将设置为最后一个位置,outRect但它对我不起作用。

outRect.setEmpty()

我有一个extension fun这样的:

fun RecyclerView.addItemDecorationWithoutLastDivider(orientation:Int) {

    addItemDecoration(object :
        DividerItemDecoration(context,orientation) {

        override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
            super.getItemOffsets(outRect, view, parent, state)

            if (parent.getChildAdapterPosition(view) == state.itemCount - 1)
                outRect.setEmpty()
            else
                super.getItemOffsets(outRect, view, parent, state)
        }
    })
}

我在recyclerView这里设置:

recyclerView.apply {
    adapter = mBankListAdapter
    layoutManager = GridLayoutManager(requireContext(),3,RecyclerView.VERTICAL,false)

    addItemDecorationWithoutLastDivider(DividerItemDecoration.VERTICAL)
    addItemDecorationWithoutLastDivider(DividerItemDecoration.HORIZONTAL)

}

标签: androidandroid-layoutkotlinandroid-recyclerviewdivider

解决方案


推荐阅读