]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/transaction_list/TransactionListFragment.java
fix observer leak
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / transaction_list / TransactionListFragment.java
index 82082a903efd3fc8e715dfaf11c3bac142d62e3b..631205f24448f0501aef8df95362bbf5db8c4802 100644 (file)
@@ -20,11 +20,6 @@ package net.ktnx.mobileledger.ui.transaction_list;
 import android.content.Context;
 import android.database.MatrixCursor;
 import android.os.Bundle;
 import android.content.Context;
 import android.database.MatrixCursor;
 import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import com.google.android.material.floatingactionbutton.FloatingActionButton;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -36,6 +31,8 @@ import android.view.inputmethod.InputMethodManager;
 import android.widget.AutoCompleteTextView;
 import android.widget.Toast;
 
 import android.widget.AutoCompleteTextView;
 import android.widget.Toast;
 
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
 import net.ktnx.mobileledger.R;
 import net.ktnx.mobileledger.model.Data;
 import net.ktnx.mobileledger.ui.MobileLedgerListFragment;
 import net.ktnx.mobileledger.R;
 import net.ktnx.mobileledger.model.Data;
 import net.ktnx.mobileledger.ui.MobileLedgerListFragment;
@@ -48,6 +45,11 @@ import net.ktnx.mobileledger.utils.ObservableValue;
 import java.util.Observable;
 import java.util.Observer;
 
 import java.util.Observable;
 import java.util.Observer;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
 import static android.content.Context.INPUT_METHOD_SERVICE;
 
 public class TransactionListFragment extends MobileLedgerListFragment {
 import static android.content.Context.INPUT_METHOD_SERVICE;
 
 public class TransactionListFragment extends MobileLedgerListFragment {
@@ -58,6 +60,7 @@ public class TransactionListFragment extends MobileLedgerListFragment {
     private View vAccountFilter;
     private AutoCompleteTextView accNameFilter;
     private Observer backgroundTaskCountObserver;
     private View vAccountFilter;
     private AutoCompleteTextView accNameFilter;
     private Observer backgroundTaskCountObserver;
+    private Observer accountFilterObserver;
     private static void update(Observable o, Object arg) {
     }
     @Override
     private static void update(Observable o, Object arg) {
     }
     @Override
@@ -184,18 +187,16 @@ public class TransactionListFragment extends MobileLedgerListFragment {
             Globals.hideSoftKeyboard(mActivity);
         });
 
             Globals.hideSoftKeyboard(mActivity);
         });
 
-        accountFilter.addObserver((o, arg) -> {
-            String accountName = accountFilter.get();
-            modelAdapter.setBoldAccountName(accountName);
-            setShowOnlyAccountName(accountName);
-            TransactionListViewModel.scheduleTransactionListReload();
-            if (menuTransactionListFilter != null) menuTransactionListFilter.setVisible(false);
-        });
-
-        Data.profile.addObserver((o, arg) -> mActivity.runOnUiThread(() -> {
-            Log.d("transactions", "requesting list reload");
-            TransactionListViewModel.scheduleTransactionListReload();
-        }));
+        if (accountFilterObserver == null) {
+            accountFilterObserver = (o, arg) -> {
+                String accountName = accountFilter.get();
+                modelAdapter.setBoldAccountName(accountName);
+                setShowOnlyAccountName(accountName);
+                TransactionListViewModel.scheduleTransactionListReload();
+                if (menuTransactionListFilter != null) menuTransactionListFilter.setVisible(false);
+            };
+            accountFilter.addObserver(accountFilterObserver);
+        }
 
         TransactionListViewModel.scheduleTransactionListReload();
         TransactionListViewModel.updating.addObserver(
 
         TransactionListViewModel.scheduleTransactionListReload();
         TransactionListViewModel.updating.addObserver(