cleanup of the tracking of the previous transaction
authorDamyan Ivanov <dam+mobileledger@ktnx.net>
Sat, 12 Jan 2019 14:08:31 +0000 (14:08 +0000)
committerDamyan Ivanov <dam+mobileledger@ktnx.net>
Sat, 12 Jan 2019 14:08:31 +0000 (14:08 +0000)
the date indicators are handled at an upper level

app/src/main/java/net/ktnx/mobileledger/model/TransactionListItem.java
app/src/main/java/net/ktnx/mobileledger/ui/transaction_list/TransactionListAdapter.java
app/src/main/java/net/ktnx/mobileledger/ui/transaction_list/TransactionLoaderStep.java

index ee1810a90fc6603320fdc07cab91c565f06953c1..7694578e8578effd36b9ac9c713b1f771c484c7c 100644 (file)
@@ -17,6 +17,8 @@
 
 package net.ktnx.mobileledger.model;
 
+import android.support.annotation.NonNull;
+
 import java.util.Date;
 
 public class TransactionListItem {
@@ -33,6 +35,7 @@ public class TransactionListItem {
         this.type = Type.TRANSACTION;
         this.transaction = transaction;
     }
+    @NonNull
     public Type getType() {
         return type;
     }
index 0e79b7ae24223cb9d5669043f133d11688516a43..e265ee4a568505b8422bb36a971a1ee0c8829d97 100644 (file)
@@ -48,27 +48,22 @@ public class TransactionListAdapter extends RecyclerView.Adapter<TransactionRowH
     public void onBindViewHolder(@NonNull TransactionRowHolder holder, int position) {
         TransactionListItem item = TransactionListViewModel.getTransactionListItem(position);
 
+        // in a race when transaction value is reduced, but the model hasn't been notified yet
+        // the view will disappear when the notifications reaches the model, so by simply omitting
+        // the out-of-range get() call nothing bad happens - just a to-be-deleted view remains
+        // a bit longer
+        if (item == null) return;
+
         if (item.getType() == TransactionListItem.Type.TRANSACTION) {
             holder.vTransaction.setVisibility(View.VISIBLE);
             holder.vDelimiter.setVisibility(View.GONE);
             LedgerTransaction tr = item.getTransaction();
-            // in a race when transaction value is reduced, but the model hasn't been notified yet
-            // the view will disappear when the notifications reaches the model, so by simply omitting
-            // the out-of-range get() call nothing bad happens - just a to-be-deleted view remains
-            // a bit longer
-            if (tr == null) return;
-
-            LedgerTransaction previous = null;
-            TransactionListItem previousItem = null;
-            if (position > 0)
-                previousItem = TransactionListViewModel.getTransactionListItem(position - 1);
 
 //        Log.d("transactions", String.format("Filling position %d with %d accounts", position,
 //                tr.getAccounts().size()));
 
             TransactionLoader loader = new TransactionLoader();
-            loader.execute(
-                    new TransactionLoaderParams(tr, previous, holder, position, boldAccountName));
+            loader.execute(new TransactionLoaderParams(tr, holder, position, boldAccountName));
 
             // WORKAROUND what seems to be a bug in CardHolder somewhere
             // when a view that was previously holding a delimiter is re-purposed
@@ -121,18 +116,11 @@ public class TransactionListAdapter extends RecyclerView.Adapter<TransactionRowH
         @Override
         protected Void doInBackground(TransactionLoaderParams... p) {
             LedgerTransaction tr = p[0].transaction;
-            LedgerTransaction previous = p[0].previousTransaction;
 
             SQLiteDatabase db = MLDB.getReadableDatabase();
             tr.loadData(db);
 
-            boolean showDate;
-            if (previous == null) showDate = true;
-            else {
-                previous.loadData(db);
-                showDate = !previous.getDate().equals(tr.getDate());
-            }
-            publishProgress(new TransactionLoaderStep(p[0].holder, p[0].position, tr, showDate));
+            publishProgress(new TransactionLoaderStep(p[0].holder, p[0].position, tr));
 
             int rowIndex = 0;
             for (LedgerTransactionAccount acc : tr.getAccounts()) {
@@ -233,18 +221,13 @@ public class TransactionListAdapter extends RecyclerView.Adapter<TransactionRowH
     }
 
     private class TransactionLoaderParams {
-        LedgerTransaction transaction, previousTransaction;
+        LedgerTransaction transaction;
         TransactionRowHolder holder;
         int position;
         String boldAccountName;
-        TransactionLoaderParams(LedgerTransaction transaction, TransactionRowHolder holder, int position, String boldAccountName) {
-            this(transaction, null, holder, position, boldAccountName);
-        }
-        TransactionLoaderParams(LedgerTransaction transaction,
-                                LedgerTransaction previousTransaction, TransactionRowHolder holder,
+        TransactionLoaderParams(LedgerTransaction transaction, TransactionRowHolder holder,
                                 int position, String boldAccountName) {
             this.transaction = transaction;
-            this.previousTransaction = previousTransaction;
             this.holder = holder;
             this.position = position;
             this.boldAccountName = boldAccountName;
index 6b9bd402d3469de62c11294670a805451a75b945..e5243584b9037a361d21ed0214b7b89caf80a7cf 100644 (file)
@@ -29,14 +29,12 @@ class TransactionLoaderStep {
     private LedgerTransactionAccount account;
     private int accountPosition;
     private String boldAccountName;
-    private boolean showDate;
     public TransactionLoaderStep(TransactionRowHolder holder, int position,
-                                 LedgerTransaction transaction, boolean showDate) {
+                                 LedgerTransaction transaction) {
         this.step = TransactionListAdapter.LoaderStep.HEAD;
         this.holder = holder;
         this.transaction = transaction;
         this.position = position;
-        this.showDate = showDate;
     }
     public TransactionLoaderStep(TransactionRowHolder holder, LedgerTransactionAccount account,
                                  int accountPosition, String boldAccountName) {
@@ -76,7 +74,4 @@ class TransactionLoaderStep {
     public LedgerTransactionAccount getAccount() {
         return account;
     }
-    public boolean isDateShown() {
-        return showDate;
-    }
 }