val gridLayoutManager = GridLayoutManager(context, 2)
gridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(p0: Int): Int {
return when (binding.rvDevice.adapter?.getItemViewType(p0)) {
HomeDeviceAdapter.TYPE_TITLE -> 2
else -> 1
}
}
}
binding.rvDevice.layoutManager = gridLayoutManager
通过GridLayoutManager的spanSizeLookup来动态设置。
该需求的使用场景:
网格多布局
解决SwipeRefreshLayout和AppBarLayout滑动冲突问题
//解决滑动冲突
binding.appBarLayout.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { _, verticalOffset ->
binding.refreshView.isEnabled = verticalOffset >= 0
})