[Android] Fix a playlist dialog empty view refresh issue

Nicolas Pomepuy git at videolan.org
Fri Mar 14 09:31:18 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Fri Mar  7 06:37:20 2025 +0100| [eb3f7d7e2f456bdd269aeb688fa952ed71cba74c] | committer: Nicolas Pomepuy

Fix a playlist dialog empty view refresh issue

> https://code.videolan.org/videolan/vlc-android/commit/eb3f7d7e2f456bdd269aeb688fa952ed71cba74c
---

 .../src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt    | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt
index a1d28e333f..8903512c19 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SavePlaylistDialog.kt
@@ -32,6 +32,7 @@ import android.view.inputmethod.EditorInfo
 import android.widget.TextView
 import androidx.lifecycle.lifecycleScope
 import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
 import com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
@@ -63,6 +64,7 @@ import org.videolan.vlc.gui.helpers.UiTools
 import org.videolan.vlc.gui.helpers.UiTools.showPinIfNeeded
 import org.videolan.vlc.providers.FileBrowserProvider
 import org.videolan.vlc.util.isSchemeStreaming
+import org.videolan.vlc.util.onAnyChange
 import org.videolan.vlc.viewmodels.browser.TYPE_FILE
 import org.videolan.vlc.viewmodels.browser.getBrowserModel
 import java.util.LinkedList
@@ -99,6 +101,7 @@ class SavePlaylistDialog : VLCBottomSheetDialogFragment(), View.OnClickListener,
 
     private val coroutineContextProvider: CoroutineContextProvider
     private val alreadyAdding = AtomicBoolean(false)
+    private lateinit var dataObserver: RecyclerView.AdapterDataObserver
 
     override fun initialFocusedView(): View = binding.dialogPlaylistName.editText ?: binding.dialogPlaylistName
 
@@ -112,6 +115,9 @@ class SavePlaylistDialog : VLCBottomSheetDialogFragment(), View.OnClickListener,
         lifecycleScope.launch { if (requireActivity().showPinIfNeeded()) dismiss() }
         medialibrary = Medialibrary.getInstance()
         adapter = SimpleAdapter(this)
+        dataObserver = adapter.onAnyChange {
+            updateEmptyView()
+        }
         adapter.defaultCover = UiTools.getDefaultPlaylistDrawable(requireActivity())
         newTracks = try {
             @Suppress("UNCHECKED_CAST")
@@ -146,6 +152,11 @@ class SavePlaylistDialog : VLCBottomSheetDialogFragment(), View.OnClickListener,
         selectedPlaylist = savedInstanceState?.getSerializable(SELECTED_PLAYLIST) as ArrayList<Playlist>?
     }
 
+    override fun onDestroy() {
+        super.onDestroy()
+        if (::dataObserver.isInitialized) adapter.unregisterAdapterDataObserver(dataObserver)
+    }
+
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
         binding = DialogPlaylistBinding.inflate(layoutInflater, container, false)
         binding.isLoading = isLoading



More information about the Android mailing list