Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DEV -> MAIN #927

Merged
merged 136 commits into from
Oct 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
2f04929
Allow swipes without setting "leave-behind" drawables
StuStirling Nov 28, 2019
704b0e0
* remove the generic type specification for the adapter
mikepenz Dec 6, 2019
36a9355
* fix tests
mikepenz Dec 13, 2019
2815dd8
Merge tag 'v4.1.2' into develop
mikepenz Dec 23, 2019
52c9aa7
- replaced usage of 'magic number' -1 by RecyclerView.NO_POSITION co…
zTrap Dec 23, 2019
aa9894a
- added saving reference of new list in MutableSubItemList
zTrap Dec 23, 2019
5fe10b1
* fix various detekt issues
mikepenz Dec 28, 2019
d2bb821
* reverse to delegation for the MutableSubItemList
mikepenz Dec 28, 2019
eeed3f7
Merge branch 'zTrap-huge-code-cleanup' into release/v5
mikepenz Dec 28, 2019
9a15c00
* provide more memory
mikepenz Dec 28, 2019
af6a17d
Merge pull request #845 from mikepenz/feature/fix_838
mikepenz Dec 28, 2019
a856949
Merge branch 'develop' into release/v5
mikepenz Dec 28, 2019
d3fe5a4
Merge branch 'release/v5' of github.com:mikepenz/FastAdapter into rel…
mikepenz Dec 28, 2019
5d2e42b
* allow to disable adapters to make them not be shown in the list whi…
mikepenz Dec 28, 2019
d1bd15f
* fix wrong logic for the getPreItemCount
mikepenz Dec 28, 2019
272e75c
Merge pull request #854 from mikepenz/feature/disableable_adapters
mikepenz Dec 28, 2019
069f7a1
* [release] v5.0.0-a01
mikepenz Dec 28, 2019
85289cd
Broken Article Link
jstart Jan 3, 2020
432a35d
Merge pull request #856 from jstart/patch-1
mikepenz Jan 3, 2020
af203ff
Add missing ":" in dependecy in README.md
Pi143 Jan 12, 2020
63c9c7f
Merge pull request #859 from Pi143/develop
mikepenz Jan 12, 2020
878977d
- try to solve the issue of the paged list being fully loaded when as…
mikepenz Jan 20, 2020
751e66b
- refactor to use MaterialDrawer v8
mikepenz Jan 20, 2020
cb6fac7
- simplify dependencies
mikepenz Jan 20, 2020
1b93560
- ensure exlcuding fastadapter from dependencies
mikepenz Jan 20, 2020
01dd52a
- include github actions
mikepenz Jan 20, 2020
fdaea8a
Merge pull request #837 from StuStirling/feature/swipeswithoutdrawables
mikepenz Jan 20, 2020
6aa4eec
* [release] v5.0.0-a02
mikepenz Jan 20, 2020
3de127b
- raise java memory
mikepenz Jan 20, 2020
ada84d3
- try to raise java heap size for github actions build
mikepenz Jan 20, 2020
9f02718
- try to add jvmargs 4g
mikepenz Jan 20, 2020
7aa6691
- ModelAdapter.kt does not require peeking
mikepenz Jan 20, 2020
5ecff5f
* [release] v5.0.0-a03
mikepenz Jan 20, 2020
fde5ff9
Merge pull request #853 from mikepenz/release/v5
mikepenz Jan 25, 2020
494df3d
- add v5 migration info
mikepenz Jan 25, 2020
e402205
- introduce new binding module which adds abstract items to simplify …
mikepenz Jan 30, 2020
fe2542c
* [release] v5.0.0-a04
mikepenz Jan 30, 2020
85752d7
-fix(#866): drawables with ratio different than 1:1 (swipe)
comradewalker Feb 7, 2020
7f63439
Merge pull request #867 from comradewalker/fix#866
mikepenz Feb 7, 2020
92a833b
- improve AbstractBindingItem.kt by also providing the parent
mikepenz Feb 12, 2020
3a3f6a3
* [release] v5.0.0-a05
mikepenz Feb 12, 2020
e0644e6
Merge pull request #864 from mikepenz/feature/viewbinding
mikepenz Feb 12, 2020
48c49ae
- introduce new interface which is meant to split out the viewHolder …
mikepenz Feb 15, 2020
8207baf
* [release] v5.0.0-a06
mikepenz Feb 15, 2020
dec4324
- update to latest android iconics library
mikepenz Feb 15, 2020
976c316
- update to compatible materialDrawer release using the new FastAdapt…
mikepenz Feb 15, 2020
da43bd8
- add comment
mikepenz Feb 15, 2020
74d1e15
- remove the type from the factory
mikepenz Feb 19, 2020
83cd784
- probably it is not the right time yet to deprecate old items
mikepenz Feb 19, 2020
7c85472
- eliminate unnecessary duplicated class
mikepenz Feb 19, 2020
62edca9
- eliminate layoutRes from interface where it is no longer needed, es…
mikepenz Feb 21, 2020
c1037ce
- even further simplify the view binding case, by providing an Abstra…
mikepenz Feb 21, 2020
abdb839
- adjust all payloads to be immutable `MutableList<Any>` -> `List<Any>`
mikepenz Feb 21, 2020
dd96c4a
- remove unnecessary layout, fix overlapping statusbar in SortActivit…
mikepenz Feb 21, 2020
b5e9e69
Merge pull request #869 from mikepenz/feature/itemviewholderfactory
mikepenz Feb 21, 2020
f165a4c
* [release] v5.0.0-a07
mikepenz Feb 21, 2020
17e0f5b
- add convenient abstract ModelAbstractBindingItem.kt
mikepenz Feb 21, 2020
8d7e360
- eliminate to register types and factories in the type factory
mikepenz Feb 21, 2020
7d50f9a
* [release] v5.0.0-a08
mikepenz Feb 21, 2020
075892c
* Rename parameters in AbstractBindingItem to match the type
bdumeljic Feb 27, 2020
6f4fd78
Merge pull request #876 from bdumeljic/feature/viewbinding_holder_par…
mikepenz Feb 27, 2020
6f84065
- update gradle
mikepenz Feb 28, 2020
89933a7
* [release] v5.0.0-b01
mikepenz Feb 28, 2020
2ec022e
- fix test
mikepenz Mar 1, 2020
743e393
- simplify README
mikepenz Mar 1, 2020
0b7adcc
- add build success badge
mikepenz Mar 1, 2020
7de18c9
- [release] v5.0.0
mikepenz Mar 8, 2020
1fa4b0c
- add bindView adjustment
mikepenz Mar 8, 2020
61561fb
- add most simple way to create an item with binding
mikepenz Mar 8, 2020
066352f
- add gradle wrapper validation to ensure it is safe
mikepenz Mar 22, 2020
5e677d5
- update to gradle 6.2.2
mikepenz Mar 22, 2020
571a52a
- update to drawerLayout 1.1.0-alpha04
mikepenz Mar 22, 2020
1f14ded
- update sample activity to latest materialDrawer release setup
mikepenz Mar 22, 2020
606345a
Small fixes in README
marcauberer Apr 2, 2020
13c6e47
Merge pull request #883 from marcauberer/develop
mikepenz Apr 3, 2020
bd71dcf
- update to gradle build tools 4.1.0-alpha05
mikepenz Apr 11, 2020
960d653
Merge pull request #2 from mikepenz/develop
RobbWatershed Apr 29, 2020
73a066f
Suggestion to listen to the drag start event (#886)
RobbWatershed Apr 30, 2020
9f0b4a0
- Project is now entirely buildable (oops...)
RobbWatershed Apr 30, 2020
7ec7bc5
Make style check happy
RobbWatershed Apr 30, 2020
4ca683a
- open up all methods in the ViewHolder of the FastAdapter.kt
mikepenz May 9, 2020
0cbc8a3
- update to gradle build tools 4.1.0-alpha09
mikepenz May 9, 2020
dd71f33
Merge branch 'develop' of https://github.com/RobbWatershed/FastAdapte…
mikepenz May 9, 2020
24a39cd
- add default method for interface so current implementation don't ne…
mikepenz May 9, 2020
be119be
t push origin developMerge branch 'RobbWatershed-develop' into develop
mikepenz May 9, 2020
c458846
- update to latest dependency versions
mikepenz May 9, 2020
b72e925
- [release] v5.0.1
mikepenz May 9, 2020
7783d31
Merge pull request #3 from mikepenz/develop
RobbWatershed May 9, 2020
22b3e06
Proper onDrop feedback when the item is dropped on its initial positi…
RobbWatershed May 9, 2020
ee6b865
- add slight documentation
mikepenz May 12, 2020
2b02079
t push origin developMerge branch 'RobbWatershed-develop' into develop
mikepenz May 12, 2020
65cd141
- [release] v5.0.2
mikepenz May 12, 2020
5c03b03
- enable maven sync again
mikepenz May 12, 2020
bc4158d
- split apart functions in diff util to allow a more modular usage
mikepenz May 14, 2020
8726b1b
Merge pull request #895 from mikepenz/fix/893
mikepenz Jun 6, 2020
5c53cf0
- update dependencies
mikepenz Jun 6, 2020
d912dba
- use stable gradle build tools 4.0.0
mikepenz Jun 6, 2020
a5ff98a
- appcompat 1.2.0-rc01
mikepenz Jun 6, 2020
292d172
- update to latest bintray release plugin
mikepenz Jun 6, 2020
533f439
- [release] v5.1.0
mikepenz Jun 6, 2020
d359f4a
Merge pull request #4 from mikepenz/develop
RobbWatershed Jul 1, 2020
7eb8fb1
Swipe gesture sensitivity and threshold are now customizable [#905]
RobbWatershed Jul 1, 2020
a97782e
Merge pull request #906 from RobbWatershed/develop
mikepenz Jul 1, 2020
c001b88
Working drawer swipe (WIP; still much cleanup to do)
RobbWatershed Jul 4, 2020
69abdc6
Cleaned up drawer swipe
RobbWatershed Jul 4, 2020
3094afa
Cleanup; fix left/right confusion
RobbWatershed Jul 4, 2020
e17962f
Simplify clicked child detection (no member RecyclerView)
RobbWatershed Jul 4, 2020
6bed334
Merge pull request #5 from mikepenz/develop
RobbWatershed Jul 4, 2020
db1b864
Remove empty constructor
RobbWatershed Jul 4, 2020
e42cae2
Comply with code beauty standards
RobbWatershed Jul 4, 2020
c6b7ec9
t push origin developMerge branch 'RobbWatershed-develop' into develop
mikepenz Jul 5, 2020
a4620a2
- [release] v5.2.0
mikepenz Jul 5, 2020
1638b94
- add new mention for great contributions
mikepenz Jul 5, 2020
c5d6997
Merge pull request #6 from mikepenz/develop
RobbWatershed Jul 6, 2020
64b3170
Fix inconsistency between helper and main class arguments
RobbWatershed Jul 6, 2020
1c6eb13
Merge pull request #908 from RobbWatershed/develop
mikepenz Jul 8, 2020
8a6e0c2
- fix implementation of the equals method for the `BaseItem`
mikepenz Jul 14, 2020
224fb35
- [release] v5.2.1
mikepenz Jul 14, 2020
b6c372a
Add expandAllOnPath method to ExpandableExtension
JakubMosakowski Jul 15, 2020
0c347a6
- assigning parent is already handled in the lib
mikepenz Jul 18, 2020
0c27de5
Merge branch 'JakubMot push origin developsakowski-feature/expand-all…
mikepenz Jul 18, 2020
4271226
- fix linking in sample app
mikepenz Jul 18, 2020
b42e6b4
- [release] v5.2.2
mikepenz Jul 18, 2020
67de465
- upgrade to target API 30
mikepenz Aug 24, 2020
00713e8
- [release] v5.2.3
mikepenz Aug 24, 2020
30f98e8
Fix typos in readme
koral-- Sep 25, 2020
1e7b666
Merge pull request #922 from koral--/patch-2
mikepenz Sep 26, 2020
f44e846
Set correct default value
Ceees2 Oct 8, 2020
f2df856
- update gradle to v6.6.1
mikepenz Oct 9, 2020
56c23f4
- try to fix roboelectric by specifying lower android target
mikepenz Oct 9, 2020
3aadf2f
Merge pull request #926 from mikepenz/feature/dependency_updates_2020…
mikepenz Oct 9, 2020
05e90eb
Set correct default value
Ceees2 Oct 8, 2020
84c4ad0
Merge branch 'develop' of https://github.com/Ceees2/FastAdapter into …
Ceees2 Oct 9, 2020
30052bd
- add a config flag allowing to modify the notify behavior
mikepenz Oct 9, 2020
35f337e
t push origin developMerge branch 'Ceees2-develop' into develop
mikepenz Oct 9, 2020
ce5b642
- [release] v5.2.4
mikepenz Oct 9, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Thanks to https://github.com/coil-kt/coil/blob/master/.github/workflows/ci.yml

name: CI
on:
push:
branches:
- master
pull_request:
jobs:
ci:
name: Build + Test
runs-on: macOS-latest
steps:
- uses: actions/checkout@v2

# Ensure .gradle/caches is empty before writing to it.
# This helps us stay within Github's cache size limits.
- name: Clean Cache
run: rm -rf ~/.gradle/caches

# Restore the cache.
# Intentionally don't set 'restore-keys' so the cache never contains redundant dependencies.
- uses: actions/cache@v1
with:
path: ~/.gradle/caches
key: gradle-${{ runner.os }}-${{ hashFiles('**/build.gradle') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} }}

- name: Build
run: ./gradlew clean build

- name: Test
run: ./gradlew test

- name: Detekt
run: ./gradlew detekt
10 changes: 10 additions & 0 deletions .github/workflows/gradle-wrapper-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: "Validate Gradle Wrapper"
on: [push, pull_request]

jobs:
validation:
name: "Validation"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: gradle/wrapper-validation-action@v1
27 changes: 0 additions & 27 deletions .travis.yml

This file was deleted.

22 changes: 22 additions & 0 deletions MIGRATION.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
### Upgrade Notes

#### v5.x.y

v5 brings some general API cleanup which should make the usage easier. Removed generic type to simplify code.

- Usages of the `FastAdapter.with()` method have been simplified

```kotlin
// old
FastAdapter.with<ExpandableTestItem, IAdapter<ExpandableTestItem>>(itemAdapter)
// v5
FastAdapter.with(itemAdapter)
```

- Correct API specification for the bind method. (The payload for bindView should be immutable)

```kotlin
// old
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int, payloads: MutableList<Any>)
// v5
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int, payloads: List<Any>)
```

#### v4.x.y

v4 is a huge release changing most of the codebase to Kotlin. This comes with many refactors, and as a result of that with many breaking API changes.
Expand Down
81 changes: 52 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
# FastAdapter [ ![Download](https://api.bintray.com/packages/mikepenz/maven/com.mikepenz%3Afastadapter/images/download.svg) ](https://bintray.com/mikepenz/maven/com.mikepenz%3Afastadapter/_latestVersion)
# FastAdapter [![Status](https://travis-ci.org/mikepenz/FastAdapter.svg?branch=develop)](https://travis-ci.org/mikepenz/FastAdapter) [![Download](https://api.bintray.com/packages/mikepenz/maven/com.mikepenz%3Afastadapter/images/download.svg)](https://bintray.com/mikepenz/maven/com.mikepenz%3Afastadapter/_latestVersion)

> The RecyclerView is one of the most used widgets in the Android world, and with it you have to implement an Adapter which provides the items for the view. Most use cases require the same base logic, but require you to write everything again and again.
The FastAdapter is here to simplify creating adapters for RecyclerViews. Don't worry about the adapter anymore. Just write the logic for how your view/item should look like, and you are done.
It's blazingly fast, minimizing the code you need to write, and is easy to extend.

The FastAdapter is here to simplify this process. You don't have to worry about the adapter anymore. Just write the logic for how your view/item should look like, and you are done.
This library has a fast and highly optimized core which provides core functionality, most apps require. It also prevents common mistakes by taking away those steps from the devs.
Beside being blazing fast, minimizing the code you need to write, it is also really easy to extend. Just provide another adapter implementation, hook into the adapter chain, custom select / deselection behaviors. Everything is possible.
-------

## A quick overview:
<p align="center">
<a href="#whats-included-">What's included 🚀</a> &bull;
<a href="#setup">Setup 🛠️</a> &bull;
<a href="MIGRATION.md">Migration Guide 🧬</a> &bull;
<a href="#used-by">Used by</a> &bull;
<a href="https://play.google.com/store/apps/details?id=com.mikepenz.fastadapter.app">Sample App</a>
</p>

-------

### What's included 🚀
- Core module 100% in Kotlin
- Click / Long-Click listeners
- Selection / Multi-Selection ([MultiselectSample](https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/MultiselectSampleActivity.kt), [CheckBoxSample](https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/CheckBoxSampleActivity.kt), [RadioButtonSample](https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/RadioButtonSampleActivity.kt))
Expand All @@ -26,26 +35,24 @@ Beside being blazing fast, minimizing the code you need to write, it is also rea
- Comes with useful Helpers
- ActionModeHelper ([MultiselectSample](https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/MultiselectSampleActivity.kt))
- UndoHelper ([MultiselectSample](https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/MultiselectSampleActivity.kt))
- More to come...
- FastScroller (external lib) ([SimpleItemListSample](https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/SimpleItemListActivity.kt))
- Paging (via Jetpack paging lib) ([PagedActivity](https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/PagedActivity.kt))
- More to come...

# Preview
## Demo
You can try it out here [Google Play](https://play.google.com/store/apps/details?id=com.mikepenz.fastadapter.app) (or download the latest release from GitHub)

## Screenshots
## Screenshots 🎉
![Image](https://raw.githubusercontent.com/mikepenz/FastAdapter/develop/DEV/github/screenshots1.jpg)

# Setup

# Include in your project
## Latest releases
## Latest releases 🛠

- Kotlin | [v4.1.2](https://github.com/mikepenz/FastAdapter/tree/v4.1.2)
- Kotlin | [v5.2.4](https://github.com/mikepenz/FastAdapter/tree/v5.2.4)
- Java && AndroidX | [v3.3.1](https://github.com/mikepenz/FastAdapter/tree/v3.3.1)
- Java && AppCompat | [v3.2.9](https://github.com/mikepenz/FastAdapter/tree/v3.2.9)

## Using Maven
## Provide the gradle dependency

The library is split up into core, commons, and extensions. The core functions are included in the following dependency.
```gradle
Expand All @@ -57,31 +64,26 @@ implementation "androidx.recyclerview:recyclerview:${androidX}"
Expandable support is included and can be added via this
```gradle
implementation "com.mikepenz:fastadapter-extensions-expandable:${latestFastAdapterRelease}"
//The tiny Materialize library used for its useful helper classes
implementation "com.mikepenz:materialize:${latestVersion}" // at least 1.2.0
```

Many helper classes are included in the following dependency.
```gradle
implementation "com.mikepenz:fastadapter-extensions-binding:${latestFastAdapterRelease}" // view binding helpers
implementation "com.mikepenz:fastadapter-extensions-diff:${latestFastAdapterRelease}" // diff util helpers
implementation "com.mikepenz:fastadapter-extensions-drag:${latestFastAdapterRelease}" // drag support
implementation "com.mikepenz:fastadapter-extensions-paged:${latestFastAdapterRelease}" // paging support
implementation "com.mikepenz:fastadapter-extensions-scroll${latestFastAdapterRelease}" // scroll helpers
implementation "com.mikepenz:fastadapter-extensions-scroll:${latestFastAdapterRelease}" // scroll helpers
implementation "com.mikepenz:fastadapter-extensions-swipe:${latestFastAdapterRelease}" // swipe support
implementation "com.mikepenz:fastadapter-extensions-ui:${latestFastAdapterRelease}" // pre-defined ui components
implementation "com.mikepenz:fastadapter-extensions-utils:${latestFastAdapterRelease}" // needs the `expandable`, `drag` and `scroll` extension.

// required for the ui components and the utils
implementation "com.google.android.material:material:${androidX}"
//The tiny Materialize library used for its useful helper classes
implementation "com.mikepenz:materialize:${latestVersion}" // at least 1.2.0
```

## v4.x.y
> Major release, migrates fully to Kotlin. Check out the changelog or the [MIGRATION GUIDE](https://github.com/mikepenz/FastAdapter/blob/develop/MIGRATION.md for more details

## How to use
### 1. Implement your item (the easy way)
### 1. Implement your item
#### 1a. Implement your item as usual (the easy way)
Just create a class which extends the `AbstractItem` as shown below. Implement the methods, and your item is ready.
```kotlin
open class SimpleItem : AbstractItem<SimpleItem.ViewHolder>() {
Expand All @@ -92,7 +94,7 @@ open class SimpleItem : AbstractItem<SimpleItem.ViewHolder>() {
override val type: Int
get() = R.id.fastadapter_sample_item_id

/** defines the layout which will be used for this item in the list */
/** defines the layout which will be used for this item in the list */
override val layoutRes: Int
get() = R.layout.sample_item

Expand All @@ -104,7 +106,7 @@ open class SimpleItem : AbstractItem<SimpleItem.ViewHolder>() {
var name: TextView = view.findViewById(R.id.material_drawer_name)
var description: TextView = view.findViewById(R.id.material_drawer_description)

override fun bindView(item: SimpleItem, payloads: MutableList<Any>) {
override fun bindView(item: SimpleItem, payloads: List<Any>) {
name.text = item.name
description.text = item.name
}
Expand All @@ -118,6 +120,26 @@ open class SimpleItem : AbstractItem<SimpleItem.ViewHolder>() {

```

#### 1b. Implement item with ViewBinding (the easiest way)

```kotlin
class BindingIconItem : AbstractBindingItem<IconItemBinding>() {
var name: String? = null

override val type: Int
get() = R.id.fastadapter_icon_item_id

override fun bindView(binding: IconItemBinding, payloads: List<Any>) {
binding.name.text = name
}

override fun createBinding(inflater: LayoutInflater, parent: ViewGroup?): IconItemBinding {
return IconItemBinding.inflate(inflater, parent, false)
}
}
```
Use the `binding` extension dependency in your application for this.

### 2. Set the Adapter to the RecyclerView
```kotlin
//create the ItemAdapter holding your Items
Expand Down Expand Up @@ -226,7 +248,7 @@ override fun itemTouchOnMove(oldPosition: Int, newPosition: Int): Boolean {
Start by initializing your adapters:

```kotlin
// Head is a model class for your header
// Header is a model class for your header
val headerAdapter = ItemAdapter<Header>()
```

Expand Down Expand Up @@ -295,9 +317,9 @@ open class SimpleSubExpandableItem : AbstractExpandableItem<SimpleSubExpandableI


## Articles
- [RecyclerView Adapter made easy](http://blog.grafixartist.com/recyclerview-adapter-android-made-fast-easy/) (FastAdapter v2.x)
- [RecyclerView Adapter made easy](https://blog.iamsuleiman.com/recyclerview-adapter-android-made-fast-easy/) (FastAdapter v2.x)

## Libs used in sample app:
## Used by
Mike Penz:
- AboutLibraries https://github.com/mikepenz/AboutLibraries
- Android-Iconics https://github.com/mikepenz/Android-Iconics
Expand Down Expand Up @@ -332,10 +354,11 @@ A special thanks to the very active contributors who added many improvements to

* **[Allan Wang](https://github.com/AllanWang)**
* **[MFlisar](https://github.com/MFlisar)**
* **[RobbWatershed](https://github.com/RobbWatershed)**

# License

Copyright 2019 Mike Penz
Copyright 2020 Mike Penz

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
Loading