Renderer RecyclerView Adapter
- Now you do not need to implement adapters for RecyclerView;
- You can easily use several types of cells in a single list;
- You can reuse cells in different RecyclerView;
- You can easily add a nested RecyclerView;
- You can easily add the DiffUtil;
- You can easily add the DiffUtil Payloads;
- You can easily save a state of a Item when scroll;
- You can easily add a Load More Indicator;
- Can be used without ViewHolder - use ViewBinder instead of ViewRenderer;
- Using this library will help you to follow SOLID principles.
Articles & Presentations
- [EN] A RecyclerView with multiple item types — Medium
- [EN] How to easily add Nested RecyclerView — Medium
- [EN] Simplifying the work with RecyclerView — Medium
- [RU] Легкая работа со списками — Habr
- [RU] Легкая работа со списками ч.2 — Habr
- [RU] Максимально упрощаем работу с RecyclerView — Habr
- [RU] История оптимизации работы с RecyclerView — MobiFest 2018
Examples
| All | View Renderer | View Binder | Load More |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
| Composite | ViewState | Diff Util | Payload |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Wiki
Gradle
BETA
Include this feature https://github.com/vivchar/RendererRecyclerViewAdapter/issues/32
Usage
- Step 1: Add the ViewModel interface to your UI model
- Step 2: Create your item_layout
- Step 3: Initialize Adapter and register the ViewBinder
mRecyclerViewAdapter = new RendererRecyclerViewAdapter(); mRecyclerViewAdapter.registerRenderer(new ViewBinder<>( R.layout.item_layout, SomeModel.class, (model, finder, payloads) -> finder .find(R.id.custom, (ViewProvider<CustomView>) customView -> { ... }) .setBackground(R.id.image, model.getBackground()) .setText(R.id.text, model.getText()) .setOnClickListener(R.id.button, v -> { ... }) )); mRecyclerViewAdapter.registerRenderer(...); /* you can use several types of cells */ /* Regular code: mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.setAdapter(mRecyclerViewAdapter); mRecyclerViewAdapter.setItems(getItems()); mRecyclerViewAdapter.notifyDataSetChanged(); */
Release notes
Migrations
Projects using RendererRecyclerViewAdapter
- Camfrog: Group Video Chat;
- Paltalk: Free group video calls & chat rooms;
- DeskRoll: Gives you secure remote access to computers;
- MedikTest: Preparation for accreditation of doctors;
- KFormMaster: Easily build generic forms with minimal effort;
- KDV Online: Online store of KDV, Russian producer of snacks and confectionery products, whose goods are well known and beloved not only in Russia but also well beyond.
Send me a pull request with modified README.md to get a shoutout!
Communication
- If you need help, please use Stack Overflow.
- If you found a bug, please open Issue.
- If you have a feature request, please open Issue.
- If you want to contribute, please submit Pull request.





