+ AccountSummaryAdapter() {
+ setHasStableIds(true);
+
+ listDiffer = new AsyncListDiffer<>(this, new DiffUtil.ItemCallback<AccountListItem>() {
+ @Nullable
+ @Override
+ public Object getChangePayload(@NonNull AccountListItem oldItem,
+ @NonNull AccountListItem newItem) {
+ Change changes = new Change();
+
+ final LedgerAccount oldAcc = oldItem.getAccount();
+ final LedgerAccount newAcc = newItem.getAccount();
+
+ if (!Misc.equalStrings(oldAcc.getName(), newAcc.getName()))
+ changes.add(Change.NAME);
+
+ if (oldAcc.getLevel() != newAcc.getLevel())
+ changes.add(Change.LEVEL);
+
+ if (oldAcc.isExpanded() != newAcc.isExpanded())
+ changes.add(Change.EXPANDED);
+
+ if (oldAcc.amountsExpanded() != newAcc.amountsExpanded())
+ changes.add(Change.EXPANDED_AMOUNTS);
+
+ if (!oldAcc.getAmountsString()
+ .equals(newAcc.getAmountsString()))
+ changes.add(Change.AMOUNTS);
+
+ return changes.toPayload();
+ }