RecyclerViewHeader
2.0.1
当我认为 RecyclerView 是全新且困难的时候,我创建了这个库。编写一个可以扩展多种类型视图的适配器似乎是一项艰巨的工作。实际上, RecyclerViewHeader
只是一个简单问题的复杂解决方案。无需使用此库,只需学习如何创建多类型RecyclerView.Adapter
即可。从长远来看,它会给你带来很多价值,而且一点也不难。检查Migration
部分以获取此类Adapter.
不会有新的发展。
感谢大家的支持!
如果您仍然想使用这个库,请查看旧的 README.md。
只需使用可以膨胀多种类型项目的RecyclerView.Adapter
即可。
这是您可以使用的最简单的一种:
class ExampleAdapter : RecyclerView . Adapter < RecyclerView . ViewHolder >() {
companion object {
private const val VIEW_TYPE_HEADER = 4815
private const val VIEW_TYPE_ITEM = 1623
}
private val itemDataSetSize : Int get() = TODO ( " provide the size of your `ITEM` dataset " )
override fun onCreateViewHolder ( parent : ViewGroup , viewType : Int ): RecyclerView . ViewHolder {
when (viewType) {
VIEW_TYPE_HEADER -> TODO ( " create your HEADER ViewHolder " )
VIEW_TYPE_ITEM -> TODO ( " create your ITEM ViewHolder " )
else -> error( " Unhandled viewType= $viewType " )
}
}
override fun onBindViewHolder ( holder : RecyclerView . ViewHolder , position : Int ) {
when ( val viewType = getItemViewType(position)) {
VIEW_TYPE_HEADER -> TODO ( " bind your HEADER ViewHolder " )
VIEW_TYPE_ITEM -> TODO ( " bind your ITEM ViewHolder " )
else -> error( " Unhandled viewType= $viewType " )
}
}
override fun getItemCount (): Int = itemDataSetSize + 1 // 1 for header
override fun getItemViewType ( position : Int ) = when (position) {
0 -> VIEW_TYPE_HEADER
else -> VIEW_TYPE_ITEM
}
}
Copyright 2015 Bartosz Lipiński
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.