Skip to content

Commit 83d16dc

Browse files
committed
Fix flickering in channel groups list
1 parent 8ceefee commit 83d16dc

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -413,16 +413,6 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
413413
private fun handleFeedGroups(groups: List<Group>) {
414414
val listViewMode = viewModel.getListViewMode()
415415

416-
carouselAdapter.clear()
417-
carouselAdapter.add(if (listViewMode) FeedGroupAddNewItem() else FeedGroupAddNewGridItem())
418-
carouselAdapter.add(
419-
if (listViewMode)
420-
FeedGroupCardItem(-1, getString(R.string.all), FeedGroupIcon.RSS)
421-
else
422-
FeedGroupCardGridItem(-1, getString(R.string.all), FeedGroupIcon.RSS)
423-
)
424-
carouselAdapter.addAll(groups)
425-
426416
if (feedGroupsCarouselState != null) {
427417
feedGroupsCarousel.onRestoreInstanceState(feedGroupsCarouselState)
428418
feedGroupsCarouselState = null
@@ -434,6 +424,19 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
434424
binding.itemsList.post {
435425
feedGroupsCarousel.notifyChanged(FeedGroupCarouselItem.PAYLOAD_UPDATE_LIST_VIEW_MODE)
436426
feedGroupsSortMenuItem.notifyChanged(GroupsHeader.PAYLOAD_UPDATE_ICONS)
427+
428+
// update items here to prevent flickering
429+
carouselAdapter.apply {
430+
clear()
431+
if (listViewMode) {
432+
add(FeedGroupAddNewItem())
433+
add(FeedGroupCardItem(-1, getString(R.string.all), FeedGroupIcon.RSS))
434+
} else {
435+
add(FeedGroupAddNewGridItem())
436+
add(FeedGroupCardGridItem(-1, getString(R.string.all), FeedGroupIcon.RSS))
437+
}
438+
addAll(groups)
439+
}
437440
}
438441
}
439442

0 commit comments

Comments
 (0)