|
1 | 1 | Table and Collection view data sources
|
2 | 2 | ======================================
|
3 | 3 |
|
| 4 | +## Features |
| 5 | + |
| 6 | +- [x] **O(N)** algorithm for calculating differences |
| 7 | + - the algorithm has the assumption that all sections and items are unique so there is no ambiguity |
| 8 | + - in case there is ambiguity, fallbacks automagically on non animated refresh |
| 9 | +- [x] it applies additional heuristics to send the least number of commands to sectioned view |
| 10 | + - even though the running time is linear, preferred number of sent commands is usually a lot less then linear |
| 11 | + - it is preferred (and possible) to cap the number of changes to some small number, and in case the number of changes grows towards linear, just do normal reload |
| 12 | +- [x] Supports **extending your item and section structures** |
| 13 | + - just extend your item with `IdentifiableType` and `Equatable`, and your section with `AnimatableSectionModelType` |
| 14 | +- [x] Supports all combinations of two level hierarchical animations for **both sections and items** |
| 15 | + - Section animations: Insert, Delete, Move |
| 16 | + - Item animations: Insert, Delete, Move, Reload (if old value is not equal to new value) |
| 17 | +- [x] Configurable animation types for `Insert`, `Reload` and `Delete` (Automatic, Fade, ...) |
| 18 | +- [x] Example app |
| 19 | +- [x] Randomized stress tests (example app) |
| 20 | +- [x] Supports editing out of the box (example app) |
| 21 | +- [x] Works with `UITableView` and `UICollectionView` |
| 22 | + |
4 | 23 | ## Why
|
5 | 24 |
|
6 | 25 | Writing table and collection view data sources is tedious. There is a large number of delegate methods that need to be implemented for the simplest case possible.
|
|
0 commit comments