return Data.accounts.size() + (Data.profile.getValue()
.isPostingPermitted() ? 1 : 0);
}
- public void selectItem(int position) {
- try (LockHolder lh = Data.accounts.lockForWriting()) {
- LedgerAccount acc = Data.accounts.get(position);
- acc.toggleHiddenToBe();
- toggleChildrenOf(acc, acc.isHiddenByStarToBe(), position);
- notifyItemChanged(position);
- }
- }
- private void toggleChildrenOf(LedgerAccount parent, boolean hiddenToBe, int parentPosition) {
- int i = parentPosition + 1;
- try (LockHolder lh = Data.accounts.lockForWriting()) {
- for (int j = 0; j < Data.accounts.size(); j++) {
- LedgerAccount acc = Data.accounts.get(j);
- if (acc.getName().startsWith(parent.getName() + ":")) {
- acc.setHiddenByStarToBe(hiddenToBe);
- notifyItemChanged(i);
- toggleChildrenOf(acc, hiddenToBe, i);
- i++;
- }
- }
- }
- }
-
static class LedgerRowHolder extends RecyclerView.ViewHolder {
TextView tvAccountName, tvAccountAmounts;
ConstraintLayout row;
this.accountExpanderContainer =
itemView.findViewById(R.id.account_row_amounts_expander_container);
- expanderContainer.addOnLayoutChangeListener(
- (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
- int w = right - left;
- int h = bottom - top;
- if (h > w) {
- int p = (h - w) / 2;
- v.setPadding(0, p, 0, p);
- }
- else v.setPadding(0, 0, 0, 0);
- });
-
itemView.setOnLongClickListener(this::onItemLongClick);
tvAccountName.setOnLongClickListener(this::onItemLongClick);
tvAccountAmounts.setOnLongClickListener(this::onItemLongClick);