There are a few approaches that may work, depending on how people interact with the event - I have never been, but the advice is quite general:
- Filtering by time as per @AndrewBacon's reply. A good default would be only showing events today that haven't started already.
- Filtering by location. A good default may simply be suggesting to filter by "nearby", which depending on the event may be 500 meters or 5 kilometers (walking/driving).
Depending on the event there will be other things that are relevant filters - essentially you want to allow people to filter by things based on how they decide, not just on what information is available. Events may have tags for example, but if people only decide based on what's nearby, tags don't need to be prominent filters.
One thing @Rahul picked up in this comment is how many items are shown on the screen at the same time - this also makes a big difference to how long users perceive the list to be, how long it takes them to scroll, etc.
A related point is that you should have an indication of where in the list the user is, allowing them to quickly jump to a place - this is what most phones do when they show the address book. This is the timeline in my mockup. It makes sense to condense times where less is happening, like 12am - 6am potentially. The yellow blob indicates where on the timeline the user is currently.
download bmml source – Wireframes created with Balsamiq Mockups
You should also consider how you can get the user to plan / have a great time without needing to go into these long lists and filters at all. The
Favourite tab may suggest popular events (or unpopular ones to avoid overcrowding) by default. It may also recognise that there's a three hour gap between two events marked as a favourite and suggest nearby events that fit into that gap.
That would ecourage something I've most enjoyed at many of the events of this type that I've been to - discovering things serendipitously. Stuff I didn't expect to find, or plan for.