Git Product home page Git Product logo

flexibleadapter's Introduction

Android Arsenal Download API Licence Methods and Size

FlexibleAdapter

ANNOUNCEMENT: Important changes in latest release

One Adapter many Apps

๐Ÿ“ฃ 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 multiple views and now, nobody wants to use a ListView anymore.

The idea behind is to regroup multiple features in a unique library, without the need to customize and import several third libraries not compatible among them.

The FlexibleAdapter helps developers to simplify this process without worrying too much about the Adapter anymore. It's easy to use, it has predefined logic for different situations and prevents common mistakes.
This library is configurable and it guides the developers to create a better user experience and now, even more with the new features.

Main features

Extensions

Setup

build.gradle

repositories {
	jcenter()
	maven {url = "https://oss.sonatype.org/content/repositories/snapshots/" } //For Snapshots
}
dependencies {
	// Using JCenter
	compile 'eu.davidea:flexible-adapter:5.0.0-rc4'
	compile 'eu.davidea:flexible-adapter-ui:1.0.0-b1'
	compile 'eu.davidea:flexible-adapter-livedata:1.0.0-b1'
	compile 'eu.davidea:flexible-adapter-databinding:1.0.0-b2'
	
	// Using MavenSnapshots repository for continuous updates from my development
	compile 'eu.davidea:flexible-adapter:5.0.0-SNAPSHOT'
}

Stay Updated

Flexible Adapter Live Data Data Binding UI
5.0.0-rc4
1.0.0-b1
1.0.0-b2
1.0.0-b1

Wiki!

I strongly recommend to read the new Wiki pages, where you can find a comprehensive Tutorial.
Wiki pages have been completely reviewed to support all the coming features of version 5.0.0.

Pull requests / Issues / Improvement requests

Feel free to contribute and ask!
Active discussions:

Under the hood

Some simple features have been implemented, thanks to some Blogs (see at the bottom of the page), merged and methods have been improved for speed and scalability.

  • At lower level there is SelectableAdapter class. It provides selection features 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".
  • New useful extensions and helpers have been added during the time to simplify the development.
  • Item interfaces and predefined ViewHolders complete the whole library giving more actions to the items and configuration options to developers.

Showcase of the demo App

You can download* the latest demo App from the latest release page OR run it with the emulator.
This Wiki page will give you a short briefing of the demo App.

* = Publishing to Play Store is foreseen for final release.

Overall Adapter Animations Undo Staggered Layout

Endless Instagram Expandables Multi Selection & SC

Drag & Drop swipe-to-dismiss1 swipe-to-dismiss2 ViewPager

Async Filter Search Filter Search Sections

Change Log

Latest release

v5.0.0-rc4 - 2017.12.17

Old releases

v5.0.0-rc3 - 2017.10.20 | v5.0.0-rc2 - 2017.06.10 | v5.0.0-rc1 - 2017.01.14
v5.0.0-b8 - 2016.09.17 | 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

Limitations

Item half swipe cannot be implemented due to how the android.support.v7.widget.helper.ItemTouchHelper is done, also clicks on rear view are not possible, same reason. Half swipe can be done with others means, please see issues #98 and #100. See also commits of Apr 25, 2016.

Thanks

Inspired by
Special thanks goes to
  • Martin Guillon (Akylas) to have contributed at the development of the new technique for the Sticky Header.
  • Arpinca who added new features for FastScroller like autoHide and ignoreTouchesOutsideHandle and more.
Donations

This library is currently free to use and modify, if you would like to say Thank You by donating any amount, you're very welcome! Here the link to PayPal.me:

PayPal.me

Imported libraries

  • The library LollipopContactsRecyclerViewFastScroller has been imported, heavily improved and adapted to work in conjunction with AnimatorAdapter.
  • The library sticky-headers-recyclerview was initially imported, then it was removed in favor of the new technique able to manage a real View and so to handle the click events properly.
  • The item spacing technique comes from the library CommonItemDecoration and it has been improved with new features.

Apps that use this Adapter

It will be a pleasure to add your App here, once it is published.

Module.org | Neuronizer | Socio - Shake and Connect! | Shibagram | BNVR Client

License

FlexibleAdapter & Extensions

Copyright 2015-2017 Davide Steduto, Davidea Solutions Sprl

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.

FastScroller

Copyright 2016-2017 AndroidDeveloperLB, Davide Steduto & Arpinca

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.

flexibleadapter's People

Contributors

arpinca avatar borisdamato avatar danielpassos avatar davideas avatar gwailotr0n5000 avatar jeanpimentel avatar jlwatkins avatar johnjohndoe avatar jrcacd avatar long1eu avatar magneticflux- avatar ouyangzn avatar stepansanda avatar zoopolitic avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.