当前位置: 首页 > 软件库 > 手机/移动开发 > >

RecyclerViewHeader

授权协议 Apache-2.0 License
开发语言 Java
所属分类 手机/移动开发
软件类型 开源软件
地区 不详
投 递 者 申屠鹏
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

DEPRECATED

I created this library back in the day when I thought RecyclerView was all new and difficult. Writing an adapter that could inflate multiple types of Views seemed like a difficult job to do. In reality, RecyclerViewHeader is just a complex solution to a simple problem.Instead of using this library, just learn how to create a multi-type RecyclerView.Adapter. It will bring you a lot of value in the long run, and it is not difficult at all. Check the Migration section for the simplest example of such Adapter.

No new development will be taking place.

Thanks for all the support!


RecyclerViewHeader

If you still wanna use this library, check the old README.md.

Migration

Just use a RecyclerView.Adapter that can inflate multiple types of items.

Here's the simplest one you could use:

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
    }
}

Developed by

  • Bartosz Lipiński

License

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.
  • 原文: http://blog.csdn.net/qibin0506/article/details/49716795 添加header的思路就是通过adapter的itemType来加载不同的布局。 又根据LayoutManager有不同的处理方式。 1、线性布局LinearLayoutManager 简单,只需要根据不同的itemType处理不同的ViewHolder就能实现。 设置布局管理器

  • 首先看下自己的RecyclerView是否包裹在 LinearLayout, FrameLayout, RelativeLayout.这三种布局中,否则会报错:  Currently, NOT already aligned RecyclerViewHeader can only be used for RecyclerView with a parent of one of types: Lin