]> git.ktnx.net Git - mobile-ledger.git/commitdiff
fix removal of empty transaction rows after the major rework
authorDamyan Ivanov <dam+mobileledger@ktnx.net>
Sun, 28 Feb 2021 17:06:03 +0000 (19:06 +0200)
committerDamyan Ivanov <dam+mobileledger@ktnx.net>
Mon, 1 Mar 2021 06:00:42 +0000 (06:00 +0000)
app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java

index 060046c43ce4f87fb3b7fb87885356b0e9b501ef..2e9027154ae805014d6e878336434faaa8c6a7e0 100644 (file)
@@ -738,8 +738,9 @@ public class NewTransactionModel extends ViewModel {
                         list = copyList(list);
                         liveListCopied = true;
                     }
-                    Item item = emptyItems.remove(1);
-                    list.remove(item);
+                    // the list is a copy, so the empty item is no longer present
+                    Item itemToRemove = emptyItems.remove(1);
+                    removeItemById(list, itemToRemove.id);
                     listChanged = true;
                 }
 
@@ -752,8 +753,8 @@ public class NewTransactionModel extends ViewModel {
                             list = copyList(list);
                             liveListCopied = true;
                         }
-                        Item item = emptyItems.get(0);
-                        list.remove(item);
+                        // the list is a copy, so the empty item is no longer present
+                        removeItemById(list, emptyItems.get(0).id);
                         listChanged = true;
                     }
                 }
@@ -791,6 +792,19 @@ public class NewTransactionModel extends ViewModel {
             setItemsWithoutSubmittableChecks(list);
         }
     }
+    private void removeItemById(@NotNull List<Item> list, int id) {
+        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
+            list.removeIf(item -> item.id == id);
+        }
+        else {
+            for (Item item : list) {
+                if (item.id == id) {
+                    list.remove(item);
+                    break;
+                }
+            }
+        }
+    }
     @SuppressLint("DefaultLocale")
     private void dumpItemList(@NotNull String msg, @NotNull List<Item> list) {
         Logger.debug("submittable", "== Dump of all items " + msg);