davideas / FlexibleAdapter

Fast and versatile Adapter for RecyclerView which regroups several features into one library to considerably improve the user experience :-)
Apache License 2.0
3.55k stars 548 forks source link

*** Snapshots and Pre-Releases for FlexibleAdapter v5.0.0 *** #39

Closed davideas closed 6 years ago

davideas commented 8 years ago

This is an open discussion to keep track of all the work in progress of the next coming pre-releases in order to arrive to a stable and final version.

In this major release (5.0.0) there will be lot of new features, while trying to simplify the configuration to speed up the development. A full list of the features and improvements, with their status, can be found here Milestone 5.0.0. However we can identify them in:

In order to do them, I am completely changing and refactoring the code, names and how the Adapter will be extended to override its methods.

Gradle configuration

allprojects {
    repositories {
        // For [pre-]releases
        jcenter()
        // For SNAPSHOT
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    }
}
// Don't cache SNAPSHOT (changing) dependencies.
configurations.all {
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
dependencies {
    // JCenter for PreReleases
    compile 'eu.davidea:flexible-adapter:5.0.0-rc3'
    compile 'eu.davidea:flexible-adapter-livedata:1.0.0-b1'
    compile 'eu.davidea:flexible-adapter-databinding:1.0.0-b2'

    // Maven for SNAPSHOT
    compile ('eu.davidea:flexible-adapter:5.0.0-SNAPSHOT') {
        changing = true;
    }
}

As soon as a new SNAPSHOT is ready and usable I will communicate it here.

Suggestions

Naming convention adopted

Version Reason for publishing Description
5.0.0-SNAPSHOT continuous development A library with many changes that might be unstable, nice to have to early benefit of the latest bug fix, improvements and new features as soon as they are implemented.
It will replace the existent library (with that name) in the maven snapshot repository. So you don't have to manually change the version in the dependencies, but expect to upgrade your code in order to continue to compile your project.

Gradle has internal caching system with default time of 24h. Passed this time it will fetch the new Snapshot file from repository, if a new exists.
5.0.0-bX beta pre-release Usable beta library with some new features to test.
5.0.0-rcX release candidates Nearly completed library with good stability and improved features
5.0.0 release The stable library with all new features confirmed and tested.
davideas commented 8 years ago

While importing the library v5.0.0-b2 in another project, I got some difficulties implementation. Please be patient since I am working hard to simplify them for next beta: I'm changing the signature of the classes and reviewing the Item interfaces.

davideas commented 8 years ago

New pre-release v5.0.0-b3 with new functionalities, many fixes and improvements. (You can download the apk from the release page). Now it is really usable. Suggestions are welcome.

dependencies {
    compile 'eu.davidea:flexible-adapter:5.0.0-b3'
}

For next pre-release:

davideas commented 8 years ago

New 5.0.0-SNAPSHOT.

Fixes

Headers

Others additions and improvements

davideas commented 8 years ago

Note: Currently Headers are ISectionable objects containing the attached item which is updated if an event on this item occurs, the headers are scanned to identify if one of them has that item and so it is updated. I'm thinking/working to invert how a header is recognized and assigned, in such way: any item can be an ISectionable object containing the reference to another item that WILL BE the Header. This could simplify the logic and reduce bugs and maintenance, I need to analyse this point.

davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published. Related Apk is avalable under the latest release.

Refactor IFlexibleItem to IFlexible. Sorry for this, but it's now more coherent with the others interfaces names.

Improvements Cast optimization: removed unnecessary 8 casts by changing some parameters of methods from generic object T to IFlexible and IExpandable types, this should be transparent.

Headers

davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published. Related Apk is available under the latest release.

Filter Added IFilterable item interface. New clean way to filter items, Items now can implement filter() method in order to be collected for the filtered list.

Headers Added support for Orphan Headers.

Fixes Fixed hidden header silent un-linkage when deleting an item with a header.

davideas commented 8 years ago

New pre-release v5.0.0-b4 with new functionalities (Sections and Sticky headers included) and lot of improvements. (You can download the apk from the release page).

dependencies {
    compile 'eu.davidea:flexible-adapter:5.0.0-b4'
}
davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published.

Headers

farfromrefug commented 8 years ago

Wanted to say how amazing that lib is! Just discovered it and already digging it a lot. I forked it so will try to help as much as i can. Thanks

davideas commented 8 years ago

@farfromrefug Thanks a lot! I'm working hard.

Feel free to Fork but be sure to modify the dev branch. Also, advise me in advance what are you going to modify in order to coordinates the commits and the work.

boldijar commented 8 years ago

Hello. I think that it would be better if the examples are completely separated. Currently i'm trying to understand how the sticky headers work in the beta version, and it's pretty hard.

Awesome lib btw.

davideas commented 8 years ago

Yes @BoldijarPaul, thank you for your message, another Activity showing how headers/sections work has to be done, and not only that, however, I have very few time in this period, maybe in April or later.

davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published. Related Apk is available under the latest release.

Refactor setHeader(header) in ISectionable interface is changed to void method.

Headers

Improvements Multiple code improvements with SonarQube tool, thanks to @georgekankava

Fixes Fixed NPE in isEnabled(position) when position is unknown.

maxoreli commented 8 years ago

Good job davideas. On Mar 26, 2016 8:19 PM, "Davide Steduto" notifications@github.com wrote:

New 5.0.0-SNAPSHOT has been published. Related Apk is available under the latest release https://github.com/davideas/FlexibleAdapter/releases.

Refactor setHeader(header) in ISectionable interface is changed to void method.

Headers

  • Now headers are clickable when sticky! StickyHeaders can now benefit of the existing click listeners in FlexibleViewHolder.
  • StickyHeaderDecoration is now deprecated, as consequence enableStickyHeaders(maxCachedHeaders) is also deprecated: use enableStickyHeaders().
  • Pay attention at the method getStickySectionHeadersHolder() (comment is exhaustive).

Improvements Multiple code improvements with SonarQube tool, thanks to @georgekankava https://github.com/georgekankava

Fixes Fixed NPE in isEnabled(position) when position is unknown.

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/davideas/FlexibleAdapter/issues/39#issuecomment-201913207

davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published.

Refactor Refactored constructor of AbstractSectionableItem that now accepts the IHeader item.

Headers

Improvements Added new method hasNewSearchText().

Fixes

Demo App

davideas commented 8 years ago

New pre-release v5.0.0-b5 many improvements and fixes. (You can download the apk from the release page).

dependencies {
    compile 'eu.davidea:flexible-adapter:5.0.0-b5'
}

For the next beta(6), I will focus on Endless Scrolling, Helpers and a new FastScroller.

davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published. Related Apk is available under the latest release.

Deprecation

Improvements

Multi-level expansion

FastScroller

Fixes

Demo App

davideas commented 8 years ago

New pre-release v5.0.0-b6 many improvements and fixes. (You can download the apk from the release page). With this pre-release, the code is available in master branch as well.

dependencies {
    compile 'eu.davidea:flexible-adapter:5.0.0-b6'
}
davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published. Related Apk is available under the latest release.

Deprecation

Improvements

Fixes

Demo App

davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published. Related Apk is available under the latest release.

Deprecation

Improvements

Fixes

Demo App

davideas commented 8 years ago

Road map for final release:

briangbrown commented 8 years ago

Looks like a sweet library. I'm going to start using this on a new project today. Thanks!

davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published. Related Apk is available under the latest release.

Deprecation and Refactoring

Improvements

Fixes

Demo App

davideas commented 8 years ago

New pre-release v5.0.0-b7 many improvements and fixes. (You can download the apk from the release page).

dependencies {
    compile 'eu.davidea:flexible-adapter:5.0.0-b7'
}
davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published. No Apk of this version is provided.

Deprecation and Refactoring

Improvements

Fixes

Demo App

davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published. This time the Apk is available under the latest release. It includes all the changes of the previous SNAPSHOT plus the following.

Deprecation and Refactoring

DividerItemDecoration

Improvements

Fixes

Demo App

davideas commented 8 years ago

New 5.0.0-SNAPSHOT has been published. The Apk is available under the latest release. It includes all the changes of the previous SNAPSHOT plus the following.

Deprecation and Refactoring

Improvements

Fixes

Demo App

davideas commented 8 years ago

New pre-release v5.0.0-b8 many improvements and fixes. (You can download the apk from the release page).

dependencies {
    compile 'eu.davidea:flexible-adapter:5.0.0-b8'
}
frozts91 commented 8 years ago

Hi davideas, i get this error while i add your library to my project.

Error:(24, 13) Failed to resolve: eu.davidea:flexible-adapter:5.0.0-b8

i use jcenter for repository


I've figured it out, at url

https://dl.bintray.com/davideas/maven/eu/davidea/flexible-adapter/

version b8 not exists, thats why gradle report error

davideas commented 8 years ago

@frozts91, now should work as normal. The plugin didn't upload at the correct position, before.

davideas commented 7 years ago

New 5.0.0-SNAPSHOT has been published. The Apk is available under the latest release. It includes the release beta8, plus the following.

Improvements

Fixes

Demo App

davideas commented 7 years ago

New 5.0.0-SNAPSHOT has been published. The Apk is available under the latest release. It includes the release beta8, all previous points, and the following.

Improvements

Fixes

davideas commented 7 years ago

New 5.0.0-SNAPSHOT has been published. The Apk is available under the latest release. It includes the release beta8, all previous points, and the following (rc1 ready).

Note: If you come from previous versions, update your code following the Wiki page Migrations.

New features

Deprecation and Refactoring

Improvements

Fixes

Demo App

davideas commented 7 years ago

First release candidate v5.0.0-rc1: new features, improvements and fixes. (You can download the apk from the release page).

dependencies {
    compile 'eu.davidea:flexible-adapter:5.0.0-rc1'
}
davideas commented 7 years ago

New 5.0.0-SNAPSHOT has been published.

Improvements

Fixes

davideas commented 7 years ago

New 5.0.0-SNAPSHOT has been published.

Improvements

Fixes

davideas commented 7 years ago

New 5.0.0-SNAPSHOT has been published.

Note: With this update you MUST review your code, see deprecations below here and if you come from previous versions/snapshots, update your code following the Wiki page Migrations.

The Apk is available under the latest release. It includes the release rc1, all previous points, and the following:

Deprecations / New Behaviors

Improvements

Fixes

Notes

davideas commented 7 years ago

New 5.0.0-SNAPSHOT has been published.

Note: With this update you MUST review your code, see deprecations below here and if you come from previous versions/snapshots, update your code following the Wiki page Migrations.

The Apk is available under the latest release. It includes the release rc1, all previous points, and the following:

Deprecations / New Behaviors

Improvements

Fixes

DemoApp

Notes

davideas commented 7 years ago

Second release candidate v5.0.0-rc2: new features, improvements and fixes. (You can download the apk from the release page).

dependencies {
    compile 'eu.davidea:flexible-adapter:5.0.0-rc2'
    compile 'eu.davidea:flexible-adapter-databinding:1.0.0-b1@aar'
}
davideas commented 7 years ago

New 5.0.0-SNAPSHOT has been published.

Deprecations / New Behaviors

Improvements

Fixes

davideas commented 7 years ago

New 5.0.0-SNAPSHOT has been published. The Apk is available under the latest release. It includes the release rc2, all previous points, and the following (rc3 ready).

Note: If you come from previous versions, update your code following the Wiki page Migrations.

New Behaviors

Temporary Revised UndoHelper

⚠️ Warning: This is a temporary state of work and might change in the near future, depends by the work in progress to support the new swipe capability.

  • Resolves #438 - Deprecated OnActionListener in UndoHelper also onPreAction() and onPostAction().
    New comprehensive methods name: Renamed the 2 callbacks methods in OnUndoListener and renamed also the method remove series:
    
    .withAction(int action, OnActionListener listener) >>> .withAction(@Action int action)
    .remove(...) >>> .start(...) // Still returns Snackbar object

OnActionListener >>> !!deprecated!! // Please read related javaDoc

OnUndoListener.onDeleteConfirmed(int action) >>> onActionConfirmed(@Action int action, int event) OnUndoListener.onUndoConfirmed(int action) >>> onActionCanceled(@Action int action)

- Resolves #434 - Consecutive Undo requests option & improved the general stability. New method to commit one by one the swiped items and undo only the latest action. Also, it will clear the internal memory references at the end of the dismissal event!
``` java
.withConsecutive(true/false) // Default value is false (accumulate items to undo)

Improvements

Fixes

davideas commented 6 years ago

New 5.0.0-SNAPSHOT has been published.

Improvements

Fixes

davideas commented 6 years ago

New 5.0.0-SNAPSHOT has been published. New beta2 UI and beta2 LiveData extenstions.

Improvements

Fixes

UI extension

LiveData extension