X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FMainActivity.java;h=9f2777b2fa01b24bf0257f1803b3b0ee3c8bc574;hp=0f668cee32379af896fc0293dfa47c1826f431e8;hb=685885185ce21d286a1eb6dadeb86829ece75250;hpb=83cac114e375728080194fb09758b49c50a8119b diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java b/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java index 0f668cee..9f2777b2 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java @@ -50,6 +50,7 @@ import net.ktnx.mobileledger.ui.profiles.ProfilesRecyclerViewAdapter; import net.ktnx.mobileledger.ui.transaction_list.TransactionListFragment; import net.ktnx.mobileledger.ui.transaction_list.TransactionListViewModel; import net.ktnx.mobileledger.utils.Colors; +import net.ktnx.mobileledger.utils.LockHolder; import net.ktnx.mobileledger.utils.MLDB; import java.lang.ref.WeakReference; @@ -377,14 +378,18 @@ public class MainActivity extends ProfileThemedActivity { public void onLatestTransactionsClicked(View view) { drawer.closeDrawers(); - showTransactionsFragment(null); + showTransactionsFragment((String) null); } private void resetFragmentBackStack() { // fragmentManager.popBackStack(0, FragmentManager.POP_BACK_STACK_INCLUSIVE); } - private void showTransactionsFragment(LedgerAccount account) { - if (account != null) TransactionListFragment.accountFilter.set(account.getName()); + private void showTransactionsFragment(String accName) { + TransactionListFragment.accountFilter.set(accName); + TransactionListFragment.accountFilter.notifyObservers(); mViewPager.setCurrentItem(1, true); + } + private void showTransactionsFragment(LedgerAccount account) { + showTransactionsFragment((account == null) ? (String) null : account.getName()); // FragmentTransaction ft = fragmentManager.beginTransaction(); // if (transactionListFragment == null) { // Log.d("flow", "MainActivity creating TransactionListFragment"); @@ -588,6 +593,7 @@ public class MainActivity extends ProfileThemedActivity { // removing all child accounts from the view int start = -1, count = 0; + try (LockHolder lh = Data.accounts.lockForWriting()) { for (int i = 0; i < Data.accounts.size(); i++) { if (acc.isParentOf(Data.accounts.get(i))) { // Log.d("accounts", String.format("Found a child '%s' at position %d", @@ -616,6 +622,7 @@ public class MainActivity extends ProfileThemedActivity { mAccountSummaryFragment.modelAdapter .notifyItemRangeRemoved(start, count); + } } } else { @@ -624,6 +631,7 @@ public class MainActivity extends ProfileThemedActivity { animator.rotationBy(-180); List children = Data.profile.get().loadVisibleChildAccountsOf(acc); + try (LockHolder lh = Data.accounts.lockForWriting()) { int parentPos = Data.accounts.indexOf(acc); if (parentPos != -1) { // may have disappeared in a concurrent refresh operation @@ -631,6 +639,7 @@ public class MainActivity extends ProfileThemedActivity { mAccountSummaryFragment.modelAdapter .notifyItemRangeInserted(parentPos + 1, children.size()); } + } } break; case R.id.account_row_acc_amounts: