RecyclerView remove divider / decorator after the last item

前端 未结 9 2127
礼貌的吻别
礼貌的吻别 2020-12-07 17:46

I have a quite simple RecyclerView.
This is how I set the divider:

DividerItemDecoration itemDecorator = new DividerItemDecoration(getContext(), DividerI         


        
9条回答
  •  渐次进展
    2020-12-07 18:07

    Extension function for Kotlin:

    fun RecyclerView.addItemDecorationWithoutLastDivider() {
    
        if (layoutManager !is LinearLayoutManager)
            return
    
        addItemDecoration(object :
            DividerItemDecoration(context, (layoutManager as LinearLayoutManager).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)
            }
        })
    }
    

    You can use it easily:

    recyclerView.addItemDecorationWithoutLastDivider()
    

提交回复
热议问题