rxlist-binder

Additional

Language
Java
Version
1.0.0 (Jun 26, 2016)
Created
Jun 26, 2016
Updated
Jul 9, 2016 (Retired)
Owner
Alex Isaienko (s0nerik)
Contributor
Alex Isaienko (s0nerik)
1
Activity
Badge
Generate
Download
Source code

rxlist-binder

Binds RxList to the RecyclerView.Adapter.

Automatically notifies the attached RecyclerView.Adapter about changes in an RxList. No more need to call notifyItem(Inserted/Removed/Changed) by yourself everytime you change the backing list.

Usage

To bind an RxList to the RecyclerView.Adapter you should subscribe to the Observable returned by the RxListBinder.bind(RxList, RecyclerView.Adapter) static method. Example:

RxListBinder.bind(list, adapter)
            .subscribe();

Note: a given RxList will be bound to the adapter until you unsubscribe from the returned Observable.

You can simplify the resulting Subscription management by using the RxLifecycle. Example of a binding that will get get created in onCreate and disposed in onDestroy:

RxList<Item> items = new RxList<>();
ItemsAdapter adapter = new ItemsAdapter(items);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(getLayoutId());
    RxListBinder.bind(items, adapter)
                .compose(bindToLifecycle())
                .subscribe();
}

Caution: to clean the RxList bound to the adapter simply call a clean() method, there's no need of creating a new RxList and attaching it to the adapter instead of the old one.

Installation

  • To use this library, add the following to your project level build.gradle:
allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}
  • Add this to your app's build.gradle:
compile 'com.github.s0nerik:rxlist-binder:{latest version}'

License

Copyright 2016 Alex Isaienko (s0nerik)

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.