+ View.OnFocusChangeListener focusMonitor = (v, hasFocus) -> {
+ if (hasFocus) {
+ boolean wasSyncing = syncingData;
+ syncingData = true;
+ try {
+ final int pos = getAdapterPosition();
+ adapter.updateFocusedItem(pos);
+ switch (v.getId()) {
+ case R.id.account_row_acc_name:
+ adapter.noteFocusIsOnAccount(pos);
+ break;
+ case R.id.account_row_acc_amounts:
+ adapter.noteFocusIsOnAmount(pos);
+ break;
+ case R.id.comment:
+ adapter.noteFocusIsOnComment(pos);
+ break;
+ }
+ }
+ finally {
+ syncingData = wasSyncing;
+ }
+ }
+ };
+
+ tvDescription.setOnFocusChangeListener(focusMonitor);
+ tvAccount.setOnFocusChangeListener(focusMonitor);
+ tvAmount.setOnFocusChangeListener(focusMonitor);
+