I have a mobile app that allows you to browse lists of songs:

Elvis - Song 1
Elvis - Song 2
Elvis - Song 3
Ernie Wood - Song 4

You can jump to the letter to filter based on the first character of the artist name. But this is not enough, there is 170k song titles, so there still is a lot of scrolling based on the first character (500 to 1000+ for just the letter E). Is there a better way of designing a navigation around a large collection like that?

3 Answers 3


This answer assumes that the interaction you're after is browsing, and not searching, as other answers have alluded to.

There is already a pattern for such an interaction, used in the iOS contacts lists, and utilized in this answer to a similar question about long lists.

I've taken the concept and added the idea that when you jump to a letter, you get an an additional slide-out menu for that lists only artists, as there will always be fewer artists than songs to scroll through.


download bmml source – Wireframes created with Balsamiq Mockups


Try making something similar to Windows explorer's search, where you start typing the song name, and it completes the list based on the closest matches. Some optional ideas is to make the system update less times if the system is slower (low ram, less than 4 cores, etc.), or to make an algorithm to pick songs to update the songs according to the recently played songs the user selected. This is both intuitive and a great way to browse larger lists.


Depending on the type of user the solution would vary:

  1. User searching for a song of his choice : In this scenario, what DripDrop (below) mentioned about just in time lookup would be a right choice.

  2. User is exploring the songs and is not looking for something particular : In this case you can add another level of pagination e.g if I am in [b] then [<< < prev 1 2 3 ... 90 next > >>] can be used

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.