Skip to content

Let RecyclerView support add HeaderView and FooterView.

License

Notifications You must be signed in to change notification settings

TakWolf/Android-HeaderAndFooterRecyclerView

Repository files navigation

Android - HeaderAndFooterRecyclerView

Platform API License JitPack

RecyclerView 添加 HeaderViewFooterView 的解决方案。

拥有如下特性:

  • 对业务 Adapter 无侵入,也不需要额外的包装 Adapter
  • HeaderViewFooterView 直接挂载在 RecyclerView 上,无需手动处理重用问题。
  • 支持 LinearLayoutManagerGridLayoutManagerStaggeredGridLayoutManager 三种布局管理器的横向和纵向布局。
  • 支持多个 HeaderViewFooterView,并且可以动态添加和删除。
  • 支持动态切换 AdapterLayoutManager
  • 额外提供分页组件,方便快速实现「下拉刷新」和「加载更多」功能。

Usage

repositories { 
    maven { setUrl("https://jitpack.io") }
}

dependencies {
    implementation("androidx.recyclerview:recyclerview:1.3.2")
    implementation("com.github.TakWolf.Android-HeaderAndFooterRecyclerView:hfrecyclerview:0.0.16")
    // 可选。分页组件。
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1")
    implementation("androidx.lifecycle:lifecycle-common:2.8.6")
    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
    implementation("com.github.TakWolf.Android-HeaderAndFooterRecyclerView:paging:0.0.16")
}
<com.takwolf.android.hfrecyclerview.HeaderAndFooterRecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
val recyclerView = findViewById<HeaderAndFooterRecyclerView>(R.id.recycler_view)
recyclerView.layoutManager = LinearLayoutManager(context)
recyclerView.adapter = adapter
        
val headerView = layoutInflater.inflate(R.layout.header, recyclerView.headerViewContainer, false)
recyclerView.addHeaderView(headerView)
        
val footerView = layoutInflater.inflate(R.layout.footer, recyclerView.footerViewContainer, false)
recyclerView.addFooterView(footerView)

License

Copyright 2022 TakWolf

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.