This RecyclerView extension library provides Google's Inbox app like swiping, Play Music app like drag-and-drop sorting and expandable item features. Works on API level 9 or later.
- API level 9 or later (However, some animations are not supported on Gingerbread.)
- Version 0.8.6 (Feb. 8, 2016) (RELEASE NOTES)
If you are using support library v23.0.x, please use v0.8.1 instead.
This library is published on jCenter. Just add these lines to build.gradle
.
dependencies {
compile ('com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.8.6@aar'){
transitive=true
}
}
The version 0.8.0 has fixed a lot of issues and introduced some new features. Some interface has changed and some methods/values/classes are marked as deprecated. Here is a quick guide for migrating from v0.7.x.
The SwipeableItemAdapter
interface has been changed drastically.
Also, some methods and some constants are marked as deprecated because vertical swipe feature is added.
Implement the new SwipeableItemAdapter.onItemSwipe()
method which returns SwipeResultAction
objects.
The SwipeResultAction
class has these three overridable methods;
void onPerformAction()
- => This method is called immediately after returning from the onItemSwipe() method. Can modify data set an
void onSlideAnimationEnd()
- => This method is called when the item slide animation is completed.
void onCleanUp()
- => This method is called after the onSlideAnimationEnd() method. Clear fields to avoid memory leak.
Just change the interfaces which your adapter implementes as follows;
SwipeableItemAdapter
->LegacySwipeableItemAdapter
ExpandableSwipeableItemAdapter
->LegacyExpandableSwipeableItemAdapter
👉 No special changes are required.
👉 No special changes are required.
Please check the implementation of the simple examples.
Class/Interface name | Description |
---|---|
RecyclerViewDragDropManager |
Provides Drag & Drop sort operation |
DraggableItemAdapter<T> |
Implement this interface on your RecyclerView.Adapter |
DraggableItemViewHolder |
Implement this interface on your RecyclerView.ViewHolder |
DraggableItemConstants |
Constant values area decleared in this interface |
Class/Interface name | Description |
---|---|
RecyclerViewSwipeManager |
Provides Swipe operation |
SwipeableItemAdapter<T> |
Implement this interface on your RecyclerView.Adapter |
SwipeableItemViewHolder |
Implement this interface on your RecyclerView.ViewHolder |
SwipeableItemConstants |
Constant values area decleared in this interface |
Class/Interface name | Description |
---|---|
RecyclerViewExpandableItemManager |
Provides Expandable item function |
ExpandableItemViewHolder |
Implement this interface on your RecyclerView.ViewHolder |
ExpandableItemAdapter<GVH, CVH> |
Implement this interface on your RecyclerView.Adapter |
ExpandableDraggableItemAdapter<GVH, CVH> |
(optional) Implement this interface on your RecyclerView.Adapter to support Drag & Drop sort operation |
ExpandableSwipeableItemAdapter<GVH, CVH> |
(optional) Implement this interface on your RecyclerView.Adapter to support Swipe operation |
ExpandableItemConstants |
Constant values area decleared in this interface |
Class/Interface name | Description |
---|---|
ItemShadowDecorator |
Drop shadow decoration for pre-Lollipop devices |
SimpleListDividerDecorator |
Simple list divider decoration |
Class name | Description |
---|---|
RecyclerViewTouchActionGuardManager |
Suppress scrolling while item animations are running |
AbstractDraggableItemViewHolder |
ViewHolder class which implements boilerplate code of the DraggableItemViewHolder interface |
AbstractSwipeableItemViewHolder |
ViewHolder class which implements boilerplate code of the SwipeableItemViewHolder interface |
AbstractExpandableItemViewHolder |
ViewHolder class which implements boilerplate code of the ExpandableItemViewHolder interface |
AbstractDraggableSwipeableItemViewHolder |
ViewHolder class which implements boilerplate code of the DraggableItemViewHolder and the SwipeableItemViewHolder interfaces |
AbstractExpandableItemAdapter<GVH, CVH> |
Adapter class which implements boilerplate code of the ExpandableItemAdapter interface |
This library is licensed under the Apache Software License, Version 2.0.
See LICENSE
for full of the license text.
Copyright (C) 2015 Haruki Hasegawa
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.