Take the 2-minute tour ×
User Experience Stack Exchange is a question and answer site for user experience researchers and experts. It's 100% free, no registration required.

I'm trying to write an Android app that requires users to select a value from a list of potentially hundreds. They're likely to know the item they're selecting to asking them to filter by typing seems like a sensible approach.

I've searched high and low but I can't find a standard way of doing this.

A spinner is no good and it takes too long to go through the list of values

An autocomplete box is no good as I need users to be contrained to only selecting items from my list.

share|improve this question
3  
I'd suggest migrating/asking this on UX.stackexchange.com –  DA01 Jun 27 '11 at 22:02
    
Is it a flat list? can they options be grouped somehow? –  DA01 Jun 27 '11 at 22:05
    
It really depends on the data in that list. It's very difficult to suggest a solution when we have no idea what are you trying to list. –  Mashhoor Jul 4 '11 at 20:18
add comment

migrated from stackoverflow.com Jun 28 '11 at 14:39

This question came from our site for professional and enthusiast programmers.

8 Answers

I think AutocompleteTextView is the best way to go. If they don't select something, or type something invalid, just give them an immediate error message.

If you don't like that, then use a ListView with fastScrollEnabled. You will have to create a SectionIndexer so people can fast scroll to the "C's" or "M's", or whatever grouping makes sense for your data.

share|improve this answer
    
Just be sure the error message is not a modal dialog. –  rightfold Jul 10 '11 at 14:49
add comment

I would probably do a list-view sorted alphabetically, and allow them to scroll from A to Z down the right side.

Android does this with contacts, and I see it a lot on iOS apps too.

See: http://stackoverflow.com/questions/3921846/how-to-implement-alphabetic-scroll-bar-in-android

share|improve this answer
add comment

I somehow dont like the single handed approach. I would prefer having an filter Box below which there is a list. This list gets filtered based on user input. This should be in addition to having list view with fastScroll and sectioned Indexer so people can choose what they prefer.

share|improve this answer
add comment

Auto-complete/look-ahead can be useful. You can implement it without letting a user enter their own value. You can use it as a form of faceted search where your search term returns results, and then they have to click one of the results to confirm. If there are no results, you show a message ('no results, please change search term') or something.

The catch with that is if you're grabbing all the data from the cell network, which can slow things down. You'll have to get creative with the UI and offer appropriate feedback that data is being grabbed.

If the categories can be grouped in some fashion, you could consider using a faceted search model where you narrow down the options by selecting broad categories.

In the same vein, you could borrow Apple's model where you drill down through list options. You could have top-level categories which could lead to sub-categories which could lead to options. The key there is that your elements are easily and uniquely group able, otherwise the user will be spending more time traversing the groups.

I'd maybe play with a hybrid solution. Have a tab bar across the top:

View Items:
[alphabetically] | groups | search

And let people toggle how they want to locate the item to select.

share|improve this answer
add comment

Maybe you could have multiple spinners to narrow down the options.

Once spinner 1 get's updated, spinner 2 is updated accordingly.

An example:

Spinner 1 - Food: Italian, American, Japanese, etc.

Spinner 2 - Actual food: pasta...

share|improve this answer
add comment

What if you group alphabetically?

ab-ba
be-gor
gos-hi
ho-lu
...

then clicking ab-ba would give you

abs-abu
ack-act
...

And so on...

With 10 rows you can pick one item out of a thousand in quick 3 taps and no scrolling.

share|improve this answer
add comment

On some web forms I see a drop-down menu that also accepts typing, so, for example, on a list of states I type "P" and it moves the selection to "Pennsylvania" for me. It's less common to see interfaces that let you type multiple characters (if I type "n-e-w h" I usually don't get New Hampshire but rather Hawaii), but if you're writing UI software and aren't limited to HTML forms you could do that.

Sorry I don't know the Android platform in particular. I'm commenting on UX, not implementation.

share|improve this answer
add comment

The best to do this is to use one of these options.

enter image description here

Expandable list and Segmented Control both of them will work for you.

  1. Expandable List : You can group your list according to your data and make an expandable list or you may try Data drill down.

  2. Segmented control : In segmented control you can try A-Z | Groups | search as segments

  3. You can use Autocomplete search form.

  4. Or you can use a-z on right panel as used in android contact list.

Even good explanation for each option is on Android Pattern.

share|improve this answer
    
Can you summarize the link here? The answer should be complete in and of itself. –  rk. Jul 13 '13 at 2:41
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.