At L4 we are often tasked with building high quality digital products on a relatively short timeline. To accomplish this, many of our platform teams take advantage of open source tools and libraries. It is typically safer to use something that has been tested and is stable rather than “reinventing the wheel”. Our Android team, in particular, is continuously adopting new libraries and techniques from the open source community. We have found that these libraries provide stability and efficiency, a key component in building better apps.
A few months ago, we started moving some of our own internal Android libraries to open source in an effort to contribute back to the community from which we have gained so much.
One of the first libraries we’ve shared is FastScroll, a ListView-like fast scroll component for use with Android’s RecyclerView. This library was created out of the need to provide fast scrolling and section indexing for lists. Android developers who have been around since the early days will remember that the original ListView component included built in fast scrolling and section indexing. When Google released RecyclerView to improve list item recycling and reduce the complexity of ListView, they only included what was minimally required to display a list. We needed a new solution for fast scrolling that is compatible with a RecyclerView and also matched new material design guidelines. Since pushing to GitHub, FastScroll has received over 500 stars and 40 forks, making it our most popular open source repository.
Over the past year we have embraced RxJava as a useful tool for thread management and reactive programming. The Android community’s adoption of RxJava has also been growing rapidly. There have been several libraries released that help provide common Android components using Rx conventions, however, when working on one particular project we couldn’t find a good solution for Android Loaders. So we decided to create one. Our library RxLoader caches the data emitted by an Observable across orientation changes. It utilizes an Android Loader while also providing the results from an Observable. This is great because it preserves the RxJava pattern when using Rx to asynchronously load data.
We encourage you to download, contribute, and give feedback on our current projects. As the community continues to grow it is exciting to see new ideas and repositories. We are also planning to expand our open source contributions to include more platforms and languages, but until then, happy pull requests!