diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt
index 77df999..29eb871 100644
--- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt
+++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/HomeActivity.kt
@@ -120,6 +120,7 @@ class HomeActivity :
         binding.swipeRefreshLayout.setOnRefreshListener {
             repository.offlineOverride = false
             lastFetchDone = false
+            items.clear()
             getElementsAccordingToTab()
             binding.swipeRefreshLayout.isRefreshing = false
         }
@@ -458,23 +459,28 @@ class HomeActivity :
         appendResults: Boolean,
         itemType: ItemType,
     ) {
-        CountingIdlingResourceSingleton.increment()
-        binding.swipeRefreshLayout.isRefreshing = true
-        CoroutineScope(Dispatchers.IO).launch {
-            repository.displayedItems = itemType
-            items =
-                if (appendResults) {
-                    repository.getOlderItems()
-                } else {
-                    repository.getNewerItems()
-                }
+        @Suppress("detekt:ComplexCondition")
+        if ((appendResults && items.size > 0) || (!appendResults && items.size == 0)) {
             CountingIdlingResourceSingleton.increment()
-            launch(Dispatchers.Main) {
-                binding.swipeRefreshLayout.isRefreshing = false
-                handleListResult()
+            binding.swipeRefreshLayout.isRefreshing = true
+            CoroutineScope(Dispatchers.IO).launch {
+                repository.displayedItems = itemType
+                items =
+                    if (appendResults) {
+                        repository.getOlderItems()
+                    } else {
+                        repository.getNewerItems()
+                    }
+                CountingIdlingResourceSingleton.increment()
+                launch(Dispatchers.Main) {
+                    binding.swipeRefreshLayout.isRefreshing = false
+                    handleListResult()
+                    CountingIdlingResourceSingleton.decrement()
+                }
                 CountingIdlingResourceSingleton.decrement()
             }
-            CountingIdlingResourceSingleton.decrement()
+        } else {
+            handleListResult()
         }
     }
 
@@ -534,7 +540,10 @@ class HomeActivity :
     }
 
     private fun reloadBadges() {
-        if (appSettingsService.isDisplayUnreadCountEnabled() || appSettingsService.isDisplayAllCountEnabled()) {
+        if (appSettingsService.isInfiniteLoadingEnabled() ||
+            appSettingsService.isDisplayUnreadCountEnabled() ||
+            appSettingsService.isDisplayAllCountEnabled()
+        ) {
             CountingIdlingResourceSingleton.increment()
             CoroutineScope(Dispatchers.IO).launch {
                 repository.reloadBadges()
diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemCardAdapter.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemCardAdapter.kt
index bb3fab0..4c8c276 100644
--- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemCardAdapter.kt
+++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemCardAdapter.kt
@@ -30,7 +30,7 @@ import org.kodein.di.instance
 
 class ItemCardAdapter(
     override val app: Activity,
-    override val items: ArrayList<SelfossModel.Item>,
+    override var items: ArrayList<SelfossModel.Item>,
     override val updateHomeItems: (ArrayList<SelfossModel.Item>) -> Unit,
 ) : ItemsAdapter<ItemCardAdapter.ViewHolder>() {
     override lateinit var binding: CardItemBinding
diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemListAdapter.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemListAdapter.kt
index d096e34..0c3c0e7 100644
--- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemListAdapter.kt
+++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemListAdapter.kt
@@ -21,7 +21,7 @@ import org.kodein.di.instance
 
 class ItemListAdapter(
     override val app: Activity,
-    override val items: ArrayList<SelfossModel.Item>,
+    override var items: ArrayList<SelfossModel.Item>,
     override val updateHomeItems: (ArrayList<SelfossModel.Item>) -> Unit,
 ) : ItemsAdapter<ItemListAdapter.ViewHolder>() {
     override lateinit var binding: ListItemBinding
diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemsAdapter.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemsAdapter.kt
index 79391a6..c19ebd9 100644
--- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemsAdapter.kt
+++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/adapters/ItemsAdapter.kt
@@ -21,7 +21,7 @@ import org.kodein.di.DIAware
 abstract class ItemsAdapter<VH : RecyclerView.ViewHolder?> :
     RecyclerView.Adapter<VH>(),
     DIAware {
-    abstract val items: ArrayList<SelfossModel.Item>
+    abstract var items: ArrayList<SelfossModel.Item>
     abstract val repository: Repository
     abstract val binding: ViewBinding
     abstract val appSettingsService: AppSettingsService
@@ -31,8 +31,7 @@ abstract class ItemsAdapter<VH : RecyclerView.ViewHolder?> :
     protected val c: Context get() = app.baseContext
 
     fun updateAllItems(items: ArrayList<SelfossModel.Item>) {
-        this.items.clear()
-        this.items.addAll(items)
+        this.items = items
         updateHomeItems(items)
         notifyDataSetChanged()
     }