Merge branch 'stableIds' into 'develop'

Don't assume Stable ids for playlist

See merge request ultrasonic/ultrasonic!1062
This commit is contained in:
birdbird 2023-06-26 17:10:06 +00:00
commit 843cf8eb28
3 changed files with 7 additions and 13 deletions

View File

@ -26,7 +26,8 @@ import timber.log.Timber
* It should be kept generic enough that it can be used a Base for all lists in the app.
*/
@Suppress("unused", "UNUSED_PARAMETER")
class BaseAdapter<T : Identifiable> : MultiTypeAdapter(), FastScrollRecyclerView.SectionedAdapter {
class BaseAdapter<T : Identifiable>(allowDuplicateEntries: Boolean = false) :
MultiTypeAdapter(), FastScrollRecyclerView.SectionedAdapter {
// Update the BoundedTreeSet if selection type is changed
internal var selectionType: SelectionType = SelectionType.MULTIPLE
@ -41,7 +42,7 @@ class BaseAdapter<T : Identifiable> : MultiTypeAdapter(), FastScrollRecyclerView
private val diffCallback = GenericDiffCallback<T>()
init {
setHasStableIds(true)
setHasStableIds(!allowDuplicateEntries)
}
override fun getItemId(position: Int): Long {

View File

@ -43,14 +43,7 @@ class TrackViewBinder(
override fun onBindViewHolder(holder: TrackViewHolder, item: Identifiable) {
val diffAdapter = adapter as BaseAdapter<*>
val track: Track = when (item) {
is Track -> {
item
}
else -> {
return
}
}
val track = (item as? Track) ?: return
// Remove observer before binding
holder.observableChecked.removeObservers(lifecycleOwner)
@ -59,7 +52,7 @@ class TrackViewBinder(
song = track,
checkable = checkable,
draggable = draggable,
diffAdapter.isSelected(item.longId)
diffAdapter.isSelected(track.longId)
)
holder.itemView.setOnLongClickListener {
@ -110,7 +103,7 @@ class TrackViewBinder(
diffAdapter.selectionRevision.observe(
lifecycleOwner
) {
val newStatus = diffAdapter.isSelected(item.longId)
val newStatus = diffAdapter.isSelected(track.longId)
if (newStatus != holder.check.isChecked) holder.check.isChecked = newStatus
}

View File

@ -176,7 +176,7 @@ class PlayerFragment :
private val binding get() = _binding!!
private val viewAdapter: BaseAdapter<Identifiable> by lazy {
BaseAdapter()
BaseAdapter(allowDuplicateEntries = true)
}
override fun onCreate(savedInstanceState: Bundle?) {