import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
+import androidx.recyclerview.widget.RecyclerView;
import net.ktnx.mobileledger.R;
import net.ktnx.mobileledger.databinding.NewTransactionAccountRowBinding;
private String decimalSeparator;
private boolean inUpdate = false;
private boolean syncingData = false;
- //TODO multiple amounts with different currencies per posting?
NewTransactionAccountRowItemHolder(@NonNull NewTransactionAccountRowBinding b,
NewTransactionItemsAdapter adapter) {
- super(b.getRoot(), adapter);
+ super(b.getRoot());
this.b = b;
new TextViewClearHelper().attachToTextView(b.comment);
boolean wasSyncing = syncingData;
syncingData = true;
try {
- final int pos = getAdapterPosition();
+ final int pos = getBindingAdapterPosition();
if (id == R.id.account_row_acc_name) {
adapter.noteFocusIsOnAccount(pos);
}
CurrencySelectorFragment cpf = new CurrencySelectorFragment();
cpf.showPositionAndPadding();
cpf.setOnCurrencySelectedListener(
- c -> adapter.setItemCurrency(getAdapterPosition(), c));
+ c -> adapter.setItemCurrency(getBindingAdapterPosition(), c));
cpf.show(activity.getSupportFragmentManager(), "currency-selector");
});
ignoreFocusChanges = true;
try {
if (((focusInfo == null) || (focusInfo.element == null) ||
- focusInfo.position != getAdapterPosition()))
+ focusInfo.position != getBindingAdapterPosition()))
return;
- NewTransactionModel.TransactionAccount acc = getItem().toTransactionAccount();
+ final NewTransactionModel.Item item = getItem();
+ if (item == null)
+ return;
+
+ NewTransactionModel.TransactionAccount acc = item.toTransactionAccount();
switch (focusInfo.element) {
case Amount:
b.accountRowAccAmounts.requestFocus();
return false;
}
- if (getAdapterPosition() < 0) {
+ if (getBindingAdapterPosition() == RecyclerView.NO_POSITION) {
// probably the row was swiped out
Logger.debug("new-trans", "Ignoring request to suncData(): adapter position negative");
return false;
}
- NewTransactionModel.Item item = getItem();
+ final NewTransactionModel.Item item = getItem();
+ if (item == null)
+ return false;
syncingData = true;
acc.isAmountSet() ? String.format("%4.2f", acc.getAmount()) : null);
displayAmountValidity(true);
- b.comment.setText(acc.getComment());
+ final String comment = acc.getComment();
+ b.comment.setText(comment);
+ styleComment(b.comment, comment);
setEditable(true);
- applyFocus(mAdapter.model.getFocusInfo()
- .getValue());
+ NewTransactionItemsAdapter adapter =
+ (NewTransactionItemsAdapter) getBindingAdapter();
+ if (adapter != null)
+ applyFocus(adapter.model.getFocusInfo()
+ .getValue());
}
finally {
syncingData = false;