- NEW! Beta version: v5.0.0-b7 built on 2016.06.20 (usable library!) 111KB
####ANNOUNCEMENT: Important and Revolutionary changes are foreseen in v5.0.0. Please see issues and releases.
When initially Android team introduced the RecyclerView widget, we had to implement a custom Adapter in several applications, again and again to provide the items for our views.
We didn't know how to add selection and to combine all the use cases in the same Adapter. Since I created this library, it has become easy to configure how views will be displayed in a list, and now, nobody wants to use a ListView anymore.
The idea behind is to regroup all the functionalities in a unique library, without the need to customize and import several third libraries specific for one or few of them.
The FlexibleAdapter helps developers to simplify this process without worrying too much about the Adapter anymore. It's easy to extend, it has predefined logic for different situations and prevents common mistakes.
This library is configurable and it guides the developers (thanks to quality comments on the methods) to create a better user experience and now, even more with the new ViewHolders and new actions.
- Simple item selection with ripple effect, Single & Multi selection mode.
- Restore deleted items, NEW works with Expandable items too!
- FastScroller, NEW now in the library supporting all the 3 Layouts.
- Customizable ItemDecoration.
- SearchFilter with Spannable text, NEW now items are animated. Works with sub items too!
- Add and Remove items with custom animations.
- NEW! Auto mapping ViewTypes with Item interfaces.
- NEW! Predefined ViewHolders.
- NEW! Headers/Sections with sticky behaviour fully clickable, collapsible, automatic linkage!
- NEW! Expandable items with Selection Coherence, multi-level expansion.
- NEW! Drag&Drop and Swipe-To-Dismiss with Leave-Behind pattern, with Selection Coherence.
- NEW! Adapter Animations with custom configuration based on adapter position and beyond.
- NEW! Innovative EndlessScroll with Adapter binding (No OnScrollListener).
- NEW! UndoHelper & ActionModeHelper.
- NEW! DrawableUtils for dynamic backgrounds with ripple (No XML).
- NEW! 1 simple constructor for all events.
- NEW! Easy runtime position calculation for adding/moving items in sections.
repositories {
jcenter()
maven {url = "http://dl.bintray.com/davideas/maven" }
maven {url = "https://oss.sonatype.org/content/repositories/snapshots/" } //For Snapshots
}
dependencies {
//Using JCenter
compile 'eu.davidea:flexible-adapter:4.2.0'
compile 'eu.davidea:flexible-adapter:5.0.0-b7'
//Using MavenSnapshots repository for continuous updates from my development
compile 'eu.davidea:flexible-adapter:5.0.0-SNAPSHOT'
}
I strongly recommend to read the new Wiki pages, where you can find a comprehensive Tutorial* and the API* documentation.
Wiki pages have been completely reviewed to support all the coming functionalities from 5.0.0.
* = Pages are under heavy revision, working in progress :-)
Feel free to contribute and ask!
Active discussions:
Some simple functionalities have been implemented thanks to some Blogs (see at the bottom of the page), merged and methods have been improved for speed and scalability, for all Activities that use a RecyclerView.
- At lower level there is
SelectableAdapter
class. It provides selection functionalities and it's able to maintain the state after the rotation: you just need to call the onSave/onRestore methods from the Activity! - At middle level, the
AnimatorAdapter
class has been added to give some animation at startup and when user scrolls. - At front level, the core class
FlexibleAdapter
. It holds and handles the main list, performs actions on all different types of item paying attention at the adding and removal of the items, as well as the new concept of "selection coherence". - Item interfaces and predefined ViewHolders complete the whole library giving more actions to the items and configuration options to the developers and the end user.
You can download the latest demo App from the latest release page.
v5.0.0-b7 - 2016.06.20
v5.0.0-b6 - 2016.05.01 |
v5.0.0-b5 - 2016.04.04 |
v5.0.0-b4 - 2016.02.21
v5.0.0-b3 - 2016.02.08 |
v5.0.0-b2 - 2016.01.31 |
v5.0.0-b1 - 2016.01.03
v4.2.0 - 2015.12.12 |
v4.1.0 - 2015.11.29 |
v4.0.1 - 2015.11.01 |
v4.0.0 - 2015.10.18
v3.1 - 2015.08.18 |
v3.0 - 2015.07.29 |
v2.2 - 2015.07.20 |
v2.1 - 2015.07.03 |
v2.0 - 2015.06.19 |
v1.0 - 2015.05.03
Item half swipe cannot be implemented due to how the android.support.v7.widget.helper.ItemTouchHelper
is done.
Half swipe can be done with others means, please see issues #98 and #100. See also commits of Apr 25, 2016.
I've used these blogs as starting point:
- http://enoent.fr/blog/2015/01/18/recyclerview-basics/
- https://www.grokkingandroid.com/statelistdrawables-for-recyclerview-selection/
Special thanks goes to Martin Guillon (Akylas) to have contributed at the development of the new technique for the Sticky Header.
- For the moment only LollipopContactsRecyclerViewFastScroller has been imported, improved and adapted to work in conjunction with
AnimatorAdapter
. - The library sticky-headers-recyclerview was initially imported and super-optimized for FlexibleAdapter, then it was removed in favor of the new technique able to keep the View and so to handle the click events.
It will be a pleasure to add your App here.
Copyright 2015-2016 Davide Steduto
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.