X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fnew_transaction%2FNewTransactionItemHolder.java;h=e4afc812aa0e35ae7dfd83d86f83ec64e76443b6;hb=ef5d367b0e34de0bf65409b3b44d686a19d50cec;hp=a69a65af40a50cdd95e5a8f0f7da3b5f605c1d59;hpb=346b3c8e74a12b1822239481f807479fa81fc706;p=mobile-ledger.git 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 a69a65af..e4afc812 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 @@ -26,6 +26,7 @@ import android.view.Gravity; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.EditText; +import android.widget.SimpleCursorAdapter; import android.widget.TextView; import androidx.annotation.ColorInt; @@ -209,7 +210,7 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder } ignoreFocusChanges = true; try { - if (((focusInfo == null) || + if (((focusInfo == null) || (focusInfo.element == null) || focusInfo.position != getAdapterPosition()) || itemView.hasFocus()) return; @@ -263,16 +264,6 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder ignoreFocusChanges = false; } }); - adapter.model.getAccountCount() - .observe(activity, count -> { - final int adapterPosition = getAdapterPosition(); - final int layoutPosition = getLayoutPosition(); - - if (adapterPosition == count) - b.accountRowAccAmounts.setImeOptions(EditorInfo.IME_ACTION_DONE); - else - b.accountRowAccAmounts.setImeOptions(EditorInfo.IME_ACTION_NEXT); - }); Data.currencyGap.observe(activity, hasGap -> updateCurrencyPositionAndPadding(Data.currencySymbolPosition.getValue(), @@ -563,7 +554,17 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder if (item instanceof NewTransactionModel.TransactionHead) { NewTransactionModel.TransactionHead head = item.toTransactionHead(); b.newTransactionDate.setText(head.getFormattedDate()); - b.newTransactionDescription.setText(head.getDescription()); + + // avoid triggering completion pop-up + SimpleCursorAdapter a = + (SimpleCursorAdapter) b.newTransactionDescription.getAdapter(); + try { + b.newTransactionDescription.setAdapter(null); + b.newTransactionDescription.setText(head.getDescription()); + } + finally { + b.newTransactionDescription.setAdapter(a); + } b.transactionComment.setText(head.getComment()); //styleComment(b.transactionComment, head.getComment()); @@ -576,7 +577,16 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder else if (item instanceof NewTransactionModel.TransactionAccount) { NewTransactionModel.TransactionAccount acc = item.toTransactionAccount(); - b.accountRowAccName.setText(acc.getAccountName()); + // 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 amountHint = acc.getAmountHint(); if (amountHint == null) { @@ -586,6 +596,9 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder b.accountRowAccAmounts.setHint(amountHint); } + b.accountRowAccAmounts.setImeOptions( + acc.isLast() ? EditorInfo.IME_ACTION_DONE : EditorInfo.IME_ACTION_NEXT); + setCurrencyString(acc.getCurrency()); b.accountRowAccAmounts.setText( acc.isAmountSet() ? String.format("%4.2f", acc.getAmount()) : null); @@ -596,14 +609,9 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder b.ntrData.setVisibility(View.GONE); b.ntrAccount.setVisibility(View.VISIBLE); b.ntrPadding.setVisibility(View.GONE); + setEditable(true); } - else if (item instanceof NewTransactionModel.BottomFiller) { - b.ntrData.setVisibility(View.GONE); - b.ntrAccount.setVisibility(View.GONE); - b.ntrPadding.setVisibility(View.VISIBLE); - setEditable(false); - } else { throw new RuntimeException("Don't know how to handle " + item); }