X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fnew_transaction%2FNewTransactionItemHolder.java;h=c6232d167f7e303af4d93be2222354918727cc36;hp=5478da8acc9e286ffcf8e3906d6b25bfde7f89d2;hb=a0508ea0def0c4c6400626f26517d8e69631ff15;hpb=c03961a02b4d5dafb50b73ff49ded68b8734b0c4 diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionItemHolder.java b/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionItemHolder.java index 5478da8a..c6232d16 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionItemHolder.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionItemHolder.java @@ -492,8 +492,8 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder head.setDate(String.valueOf(b.newTransactionDate.getText())); // transaction description is required - if (!significantChange && TextUtils.isEmpty(head.getDescription()) != - TextUtils.isEmpty(b.newTransactionDescription.getText())) + if (TextUtils.isEmpty(head.getDescription()) != + TextUtils.isEmpty(b.newTransactionDescription.getText())) significantChange = true; head.setDescription(String.valueOf(b.newTransactionDescription.getText())); @@ -503,11 +503,15 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder NewTransactionModel.TransactionAccount acc = item.toTransactionAccount(); // having account name is important - if (!significantChange && TextUtils.isEmpty(acc.getAccountName()) != - TextUtils.isEmpty(b.accountRowAccName.getText())) + final Editable incomingAccountName = b.accountRowAccName.getText(); + if (TextUtils.isEmpty(acc.getAccountName()) != + TextUtils.isEmpty(incomingAccountName)) significantChange = true; - acc.setAccountName(String.valueOf(b.accountRowAccName.getText())); + acc.setAccountName(String.valueOf(incomingAccountName)); + final int accNameSelEnd = b.accountRowAccName.getSelectionEnd(); + final int accNameSelStart = b.accountRowAccName.getSelectionStart(); + acc.setAccountNameCursorPosition(accNameSelEnd); acc.setComment(String.valueOf(b.comment.getText())); @@ -604,21 +608,31 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder b.ntrData.setVisibility(View.VISIBLE); b.ntrAccount.setVisibility(View.GONE); - b.ntrPadding.setVisibility(View.GONE); setEditable(true); } else if (item instanceof NewTransactionModel.TransactionAccount) { NewTransactionModel.TransactionAccount acc = item.toTransactionAccount(); - // avoid triggering completion pop-up - AccountAutocompleteAdapter a = - (AccountAutocompleteAdapter) b.accountRowAccName.getAdapter(); - try { - b.accountRowAccName.setAdapter(null); - b.accountRowAccName.setText(acc.getAccountName()); - } - finally { - b.accountRowAccName.setAdapter(a); + final String incomingAccountName = acc.getAccountName(); + final String presentAccountName = String.valueOf(b.accountRowAccName.getText()); + if (!TextUtils.equals(incomingAccountName, presentAccountName)) { + Logger.debug("bind", + String.format("Setting account name from '%s' to '%s' (| @ %d)", + presentAccountName, incomingAccountName, + acc.getAccountNameCursorPosition())); + // avoid triggering completion pop-up + AccountAutocompleteAdapter a = + (AccountAutocompleteAdapter) b.accountRowAccName.getAdapter(); + try { + b.accountRowAccName.setAdapter(null); + b.accountRowAccName.setText(incomingAccountName); + if (b.accountRowAccName.hasFocus()) + b.accountRowAccName.setSelection( + acc.getAccountNameCursorPosition()); + } + finally { + b.accountRowAccName.setAdapter(a); + } } final String amountHint = acc.getAmountHint(); @@ -641,7 +655,6 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder b.ntrData.setVisibility(View.GONE); b.ntrAccount.setVisibility(View.VISIBLE); - b.ntrPadding.setVisibility(View.GONE); setEditable(true); }