- public boolean areItemsTheSame(@NotNull LedgerAccount oldItem,
- @NotNull LedgerAccount newItem) {
- return TextUtils.equals(oldItem.getName(), newItem.getName());
+ public Object getChangePayload(@NonNull AccountListItem oldItem,
+ @NonNull AccountListItem newItem) {
+ Change changes = new Change();
+
+ final LedgerAccount oldAcc = oldItem.toAccount()
+ .getAccount();
+ final LedgerAccount newAcc = newItem.toAccount()
+ .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();
+ }
+ @Override
+ public boolean areItemsTheSame(@NotNull AccountListItem oldItem,
+ @NotNull AccountListItem newItem) {
+ final AccountListItem.Type oldType = oldItem.getType();
+ final AccountListItem.Type newType = newItem.getType();
+ if (oldType != newType)
+ return false;
+ if (oldType == AccountListItem.Type.HEADER)
+ return true;
+
+ return oldItem.toAccount()
+ .getAccount()
+ .getId() == newItem.toAccount()
+ .getAccount()
+ .getId();