All Projects → groupon → Featureadapter

groupon / Featureadapter

Licence: apache-2.0
FeatureAdapter (FA) is an Android Library providing an optimized way to display complex screens on Android.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Featureadapter

Androidproject
Android 技术中台,但愿人长久,搬砖不再有
Stars: ✭ 4,398 (+3826.79%)
Mutual labels:  rxjava, rxjava2, recyclerview
Rxschedulerrule
Simple JUnit rule for overriding RxJava/RxAndroid schedulers during unit tests
Stars: ✭ 35 (-68.75%)
Mutual labels:  rxjava, rxjava2
Rx.observe
Transform any method to an Rx Observable ! (VIPER)
Stars: ✭ 34 (-69.64%)
Mutual labels:  rxjava, rxjava2
Circulerautoscrollingrecyclerview
Sample code of infinite rotation using RecyclerView. Built with Kotlin
Stars: ✭ 48 (-57.14%)
Mutual labels:  rxjava, recyclerview
Rxjava2 Operators Magician
你用不惯 RxJava,只因缺了这把钥匙 🔑 You are not used to RxJava, just because of the lack of this key.
Stars: ✭ 868 (+675%)
Mutual labels:  rxjava, rxjava2
Spring Reactive Sample
Spring 5 Reactive playground
Stars: ✭ 867 (+674.11%)
Mutual labels:  rxjava, rxjava2
Bigbang
Android base project used by Xmartlabs team
Stars: ✭ 47 (-58.04%)
Mutual labels:  rxjava, rxjava2
Mvvmhabit
goldze: 本人喜欢尝试新的技术,以后发现有好用的东西,我将会在企业项目中实战,没有问题了就会把它引入到MVVMHabit中,一直维护着这套框架,谢谢各位朋友的支持。如果觉得这套框架不错的话,麻烦点个 star,你的支持则是我前进的动力!
Stars: ✭ 6,789 (+5961.61%)
Mutual labels:  rxjava, rxjava2
Thirtyinch
a MVP library for Android favoring a stateful Presenter
Stars: ✭ 1,052 (+839.29%)
Mutual labels:  rxjava, rxjava2
Aiyagirl
🔥 爱吖妹纸(含 Kotlin 分支版本)——Retrofit + RxJava + MVP 架构 APP 体验代码家的干货集中营 Gank.io,福利多多,不容错过
Stars: ✭ 1,109 (+890.18%)
Mutual labels:  rxjava, rxjava2
Rxbus
Android reactive event bus that simplifies communication between Presenters, Activities, Fragments, Threads, Services, etc.
Stars: ✭ 79 (-29.46%)
Mutual labels:  rxjava, rxjava2
Fcfrtmvp
🔥FcfrtMvp+RxHttp+RxJava(Kotlin和JAVA共用完美支持)支持一键创建MVP项目,框架简约风格及详细注释,欢迎 star or fork!
Stars: ✭ 23 (-79.46%)
Mutual labels:  rxjava, rxjava2
Rxreactor
A Kotlin framework for a reactive and unidirectional RxJava application architecture
Stars: ✭ 19 (-83.04%)
Mutual labels:  rxjava, rxjava2
Observableadapter
RecyclerView Adapter for RxJava, separates collection model from Android framework dependencies
Stars: ✭ 15 (-86.61%)
Mutual labels:  rxjava, recyclerview
Base Mvvm
App built to showcase basic Android View components like ViewPager, RecyclerView(homogeneous and heterogeneous items), NavigationDrawer, Animated Vector Drawables, Collapsing Toolbar Layout etc. housed in a MVVM architecture
Stars: ✭ 18 (-83.93%)
Mutual labels:  rxjava2, recyclerview
Graphql Retrofit Converter
A Retrofit 2 Converter.Factory for GraphQL.
Stars: ✭ 46 (-58.93%)
Mutual labels:  rxjava, rxjava2
Rxlife
使用Jetpack、Kotlin实现的RxJava自动注销库,你值得拥有!
Stars: ✭ 92 (-17.86%)
Mutual labels:  rxjava, rxjava2
Ganhuoio
基于Gank.IO提供的API的第三方客户端(RxJava+Retrofit)
Stars: ✭ 727 (+549.11%)
Mutual labels:  rxjava, rxjava2
Supermvp
MVP“美”图+新闻+天气预报+Material+RxJava3+Retrofit2+Glide4+AndroidX+Leakcanary+Butterknife
Stars: ✭ 763 (+581.25%)
Mutual labels:  rxjava, recyclerview
Rxjavaapp
学习RxJava操作符的APP,新增RxJava2.x介绍
Stars: ✭ 1,049 (+836.61%)
Mutual labels:  rxjava, rxjava2

FeatureAdapter

FeatureAdapter (FA) is an Android Library providing an optimized way to display complex screens on Android.

Build Status codecov

It offers a RecyclerView adapter that allows to define multiple “features”. Each “feature” contains multiple items rendered by multiple view types.

Starting from version 2.x, FeatureAdapter has been migrated to Android X and no longer supports android support library. If you want to use FeatureAdapter with android support library, use the version 1.y.z. Version 2.x are also based on Rx2, Rx1 is no longer supported.

Design Overview

FA will help to render a complex screen on android inside a RecyclerView. By complex, we mean a compound view that is composed of multiple items rendered by multiple view types.

Big Model:

The input of this screen is what we call “Big Model”, it’s a rich pojo that contains all (or most) of the information to render on the screen. We will render this “Big Model” inside a RecyclerView by splitting it into features. Each feature represents one aspect of the Big Model.

Feature Controllers:

To use FA, developers will have to define a list of FeatureControllers. The role of FeatureControllers is to isolate the business logic related to displaying one single feature. Each FeatureController will take the big model and produces a list of ViewItems.

ViewItems:

Each view item represents one portion of the complex screen (usually one row, but FA supports alternative layouts). Every view item consists of one small model (derived from the big model) and an AdapterViewTypeDelegate that is used to render the small pojo on screen.

Highlights

FeatureAdapter is highly optimized. It uses the lazy rendering capability of the RecyclerView to render only the features that are shown on screen. It ensures blazing fast rendering, especially the Rx based FA module as it uses parallel computation in a background thread pool.

FeatureAdapter not only displays features fast, it also updates them efficiently when the big model changes (FA uses DiffUtil). Only features that have changed are rendered again.

FA is highly customizable. For instance you can use custom renderers and custom ViewItem comparators and custom layouts, for each feature.

FA enforces separation and concerns by providing a full isolation of various features, allowing multiple teams to work on separate parts of the same screen

FA supports user interactions: each ViewItem can send events (FeatureEvent).

FA supports arbitrary complex grouping of ViewItems in a feature. GroupAdapterViewTypeDelegate will render multiple ViewItems on the same row.

FA supports custom animations and decorators for each feature.

Setup

// to use vanilla FeatureAdapter
implementation 'com.groupon.android.feature-adapter:feature-adapter:x.y.z'
// to use FeatureAdapter with Rx
implementation 'com.groupon.android.feature-adapter:feature-adapter-rx:x.y.z'
// to group features on the same row
implementation 'com.groupon.android.feature-adapter:feature-adapter-group:x.y.z'

Alternatives to FA

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].