+ @Override
+ public void bind(AccountListItem item, @Nullable List<Object> payloads) {
+ LedgerAccount acc = item.getAccount();
+
+ Change changes = new Change();
+ if (payloads != null) {
+ for (Object p : payloads) {
+ if (p instanceof Change)
+ changes.add((Change) p);
+ }
+ }
+// debug("accounts",
+// String.format(Locale.US, "Binding '%s' to %s", acc.getName(), this));
+
+ Resources rm = b.getRoot()
+ .getContext()
+ .getResources();
+
+ if (changes.has(Change.NAME))
+ b.accountRowAccName.setText(acc.getShortName());
+
+ if (changes.has(Change.LEVEL)) {
+ ConstraintLayout.LayoutParams lp =
+ (ConstraintLayout.LayoutParams) b.flowWrapper.getLayoutParams();
+ lp.setMarginStart(
+ acc.getLevel() * rm.getDimensionPixelSize(R.dimen.thumb_row_height) / 3);
+ }
+
+ if (acc.hasSubAccounts()) {
+ b.accountExpanderContainer.setVisibility(View.VISIBLE);
+
+ if (changes.has(Change.EXPANDED)) {
+ int wantedRotation = acc.isExpanded() ? 0 : 180;
+ if (b.accountExpanderContainer.getRotation() != wantedRotation) {
+// Logger.debug("acc-ui",
+// String.format(Locale.ROOT, "Rotating %s to %d", acc.getName(),
+// wantedRotation));
+ b.accountExpanderContainer.animate()
+ .rotation(wantedRotation);
+ }
+ }
+ }
+ else {
+ b.accountExpanderContainer.setVisibility(View.GONE);
+ }
+
+ if (changes.has(Change.EXPANDED_AMOUNTS)) {
+ int amounts = acc.getAmountCount();
+ if ((amounts > AMOUNT_LIMIT) && !acc.amountsExpanded()) {
+ b.accountRowAccAmounts.setText(acc.getAmountsString(AMOUNT_LIMIT));
+ b.accountRowAmountsExpanderContainer.setVisibility(View.VISIBLE);
+ }
+ else {
+ b.accountRowAccAmounts.setText(acc.getAmountsString());
+ b.accountRowAmountsExpanderContainer.setVisibility(View.GONE);
+ }
+ }
+ }