6

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.

3
  • 3
    I'd suggest migrating/asking this on UX.stackexchange.com
    – DA01
    Commented Jun 27, 2011 at 22:02
  • Is it a flat list? can they options be grouped somehow?
    – DA01
    Commented Jun 27, 2011 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
    Commented Jul 4, 2011 at 20:18

8 Answers 8

6

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.

1
  • Just be sure the error message is not a modal dialog.
    – user371
    Commented Jul 10, 2011 at 14:49
4

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: https://stackoverflow.com/questions/3921846/how-to-implement-alphabetic-scroll-bar-in-android

3

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.

1

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.

0

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...

0

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.

0

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.

0

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.

1
  • Can you summarize the link here? The answer should be complete in and of itself.
    – rk.
    Commented Jul 13, 2013 at 2:41

Your Answer

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