Rewrite grouping logic in Dialer.

- Remove expand/collapse and item type logic in GroupingListAdapter.
Losing some potential functionality, but it does not adversely
affect how we currently group, and makes grouping easier to
understanding.
+ Rewrite GroupingListAdapter to provide O(1) lookup for group size
and getItem. This requires maintaining a SparseIntArray of metadata
for each list item. Cut metadata storage from long to int, to help
adjust for the larger memory overhead.
+ Simplify the logic for building and maintaing the metadata in the
GroupingListAdapter, offloading much of it to the SparseIntArray.
+ Explictily add all groups, including groups with single items,
in the CallLogBroupBuilder.
+ Tidied up logic in CallLogGroupBuilder to make it more intuitive
what cases it's handling and what's happening.
+ Updated tests to work and pass with new tests.

Bug: 23422274
Change-Id: Ia7a00c4b580813cade87fdc054ffdd702f59c12c
7 files changed
tree: 41e8ff01c32f22fc1ca48efd7251e264fc2851e1
  1. res/
  2. src/
  3. tests/
  4. Android.mk
  5. AndroidManifest.xml
  6. proguard.flags