list: avoid crashing on span size lookups

Apparently sometimes the span size lookup will try to find an item that
does not exist. Fix that.
This commit is contained in:
Alexander Capehart 2023-05-21 12:00:21 -06:00
parent fb892453bd
commit 89eeaa33cc
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
6 changed files with 18 additions and 5 deletions

View file

@ -51,7 +51,7 @@ import org.oxycblt.auxio.util.systemBarInsetsCompat
* TODO: Fix UID naming
* TODO: Leverage FlexibleListAdapter more in dialogs (Disable item anims)
* TODO: Add more logging
* TODO: Try to move on from shared objs in synchronized and volatile
* TODO: Try to move on from synchronized and volatile in shared objs
*/
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {

View file

@ -101,7 +101,10 @@ class ArtistDetailFragment :
adapter = ConcatAdapter(artistHeaderAdapter, artistListAdapter)
(layoutManager as GridLayoutManager).setFullWidthLookup {
if (it != 0) {
val item = detailModel.artistList.value[it - 1]
val item =
detailModel.artistList.value.getOrElse(it - 1) {
return@setFullWidthLookup false
}
item is Divider || item is Header
} else {
true

View file

@ -94,7 +94,10 @@ class GenreDetailFragment :
adapter = ConcatAdapter(genreHeaderAdapter, genreListAdapter)
(layoutManager as GridLayoutManager).setFullWidthLookup {
if (it != 0) {
val item = detailModel.genreList.value[it - 1]
val item =
detailModel.genreList.value.getOrElse(it - 1) {
return@setFullWidthLookup false
}
item is Divider || item is Header
} else {
true

View file

@ -109,7 +109,10 @@ class PlaylistDetailFragment :
}
(layoutManager as GridLayoutManager).setFullWidthLookup {
if (it != 0) {
val item = detailModel.playlistList.value[it - 1]
val item =
detailModel.playlistList.value.getOrElse(it - 1) {
return@setFullWidthLookup false
}
item is Divider || item is Header
} else {
true

View file

@ -110,7 +110,10 @@ class SearchFragment : ListFragment<Music, FragmentSearchBinding>() {
binding.searchRecycler.apply {
adapter = searchAdapter
(layoutManager as GridLayoutManager).setFullWidthLookup {
val item = searchModel.searchResults.value[it]
val item =
searchModel.searchResults.value.getOrElse(it) {
return@setFullWidthLookup false
}
item is Divider || item is Header
}
}

View file

@ -335,6 +335,7 @@
<string name="def_track">No track</string>
<string name="def_song_count">No songs</string>
<string name="def_playback">No music playing</string>
<string name="def_playlists">There\'s nothing here yet</string>
<!-- Codec Namespace | Format names -->
<eat-comment />