From 5c0aaf7ad8fbbde1e272948c268d309303c5c9a2 Mon Sep 17 00:00:00 2001 From: nuclearfog Date: Mon, 17 Apr 2023 09:08:59 +0200 Subject: [PATCH] fragment bug fix --- .../twidda/ui/activities/MainActivity.java | 2 +- .../twidda/ui/adapter/FragmentAdapter.java | 16 ++++++++++++++++ .../twidda/ui/fragments/ListFragment.java | 14 ++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java index 307408ca..27063428 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java @@ -114,8 +114,8 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal finish(); break; - case LoginActivity.RETURN_LOGIN_SUCCESSFUL: case AccountActivity.RETURN_ACCOUNT_CHANGED: + case LoginActivity.RETURN_LOGIN_SUCCESSFUL: setupAdapter(); break; diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/adapter/FragmentAdapter.java b/app/src/main/java/org/nuclearfog/twidda/ui/adapter/FragmentAdapter.java index 502bbf33..bdf1be89 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/adapter/FragmentAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/adapter/FragmentAdapter.java @@ -67,6 +67,22 @@ public class FragmentAdapter extends FragmentStateAdapter { } + @Override + public long getItemId(int position) { + return fragments[position].getSessionId(); + } + + + @Override + public boolean containsItem(long itemId) { + for (ListFragment fragment : fragments) { + if (fragment.getSessionId() == itemId) + return true; + } + return false; + } + + @NonNull @Override public Fragment createFragment(int position) { diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/fragments/ListFragment.java b/app/src/main/java/org/nuclearfog/twidda/ui/fragments/ListFragment.java index 2817a72f..9c114f4b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/fragments/ListFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/fragments/ListFragment.java @@ -20,6 +20,8 @@ import org.nuclearfog.twidda.backend.utils.RefreshDelay; import org.nuclearfog.twidda.backend.utils.RefreshDelay.RefreshCallback; import org.nuclearfog.twidda.config.GlobalSettings; +import java.util.Random; + /** * this fragment class hosts a list view inside a swipe view * superclass for all list fragments @@ -33,11 +35,14 @@ public abstract class ListFragment extends Fragment implements OnRefreshListener */ private static final int REFRESH_DELAY_MS = 1000; + private static final Random rand = new Random(); + private RecyclerView list; private SwipeRefreshLayout reload; protected GlobalSettings settings; private boolean isRefreshing = false; + private long sessionId = rand.nextLong(); @Override @@ -125,6 +130,15 @@ public abstract class ListFragment extends Fragment implements OnRefreshListener } } + /** + * get session fragment ID + * + * @return unique session ID + */ + public long getSessionId() { + return sessionId; + } + /** * called when swipe refresh is active */