Bookends
A UI widget for adding headers and footers to RecyclerView
Install / Use
/learn @tumblr/BookendsREADME
Bookends
A UI widget that allows for headers and footers on lists backed by RecyclerView, for Android.
Download
Grab the artifact via JCenter. Include JCenter as a repository in your build.gradle file:
repositories {
jcenter()
}
And add Bookends to your dependencies:
dependencies {
compile (group: 'com.tumblr', name: 'bookends', version: '1.0.0', ext: 'aar')
}
Usage
Bookends wraps an adapter that you give it.
It works by creating extra view items types that are returned in getItemViewType(), and mapping these to the header and footer views provided via addHeader() and addFooter().
There are some restrictions when using this class:
-
Bookends only works for single-column lists. (ie, those that use LinearLayoutManager).
-
The base adapter can't use negative view types, since Bookends uses negative view types to keep track of header and footer views.
-
You can't add more than 1000 headers or footers.
Example:
// Create your views, whatever they may be
View myHeader = LayoutInflater.from(getContext()).inflate(R.layout.my_header, null);
View anotherHeader = LayoutInflater.from(getContext()).inflate(R.layout.another_header, null);
View myFooter = LayoutInflater.from(getContext()).inflate(R.layout.my_footer, null);
// Add them as headers / footers
Bookends<MyAdapter> adapter = new Bookends<MyAdapter>(myAdapter);
adapter.addHeader(myHeader);
adapter.addHeader(anotherHeader);
adapter.addFooter(myFooter);
Sample app
Clone and build this repo in Android Studio to see an example of a sample app. The app makes a list with RecyclerView and uses Bookends to add header and footer views.
Contact
Michael Lapadula: mlapadula@gmail.com
License
Copyright 2015 Tumblr, Inc.
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 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.
Related Skills
node-connect
337.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.2kCommit, push, and open a PR
