+ @Override
+ public int getItemViewType(int position) {
+ return (position == 0) ? ITEM_TYPE_HEADER : ITEM_TYPE_ACCOUNT;
+ }
+ public void setAccounts(List<AccountListItem> newList) {
+ Misc.onMainThread(() -> listDiffer.submitList(newList));
+ }
+ static class Change {
+ static final int NAME = 1;
+ static final int EXPANDED = 1 << 1;
+ static final int LEVEL = 1 << 2;
+ static final int EXPANDED_AMOUNTS = 1 << 3;
+ static final int AMOUNTS = 1 << 4;
+ private int value = 0;
+ public Change() {
+ }
+ public Change(int initialValue) {
+ value = initialValue;
+ }
+ public void add(int bits) {
+ value = value | bits;
+ }
+ public void add(Change change) {
+ value = value | change.value;
+ }
+ public void remove(int bits) {
+ value = value & (~bits);
+ }
+ public void remove(Change change) {
+ value = value & (~change.value);
+ }
+ public Change toPayload() {
+ if (value == 0)
+ return null;
+ return this;
+ }
+ public boolean has(int bits) {
+ return value == 0 || (value & bits) == bits;
+ }