On a mobile device with their smalls screens and restrictive input, you manage large datasets using hierarchal displays of data to start with abstractions of the full set and then drill down to actual individual entries.
All data can be divided into to subgroups which have their own subgroups and so on. To display large datasets on a mobile, you just find the subgroups and display them in order of largest to smallest and/or most general to most specific.
For example, say you have a large database of clothing. Clothing has several long established and culturally accepted subcategories so you would use those to mask size and complexity just as a department store uses categories to direct customers to the right department.
When you user opened the app, it would perform a query to get the highest level subcategories. In this example this would be, Children's, Men's and Women's. When the user selected say men's ware, they would get a list of categories of men's ware e.g. seasons. Then types of clothing, shirts, pants, etc. Then attributes of specific types of clothing and on down to a specific article of clothing.
So, a users typical input would run something like: Men's-->Summer Wear --> shirts --> cotton --> brand --> color --> shirt list --> specific shirt. At each stage the app displays just a few options for the user to select.
Searches can be tricky. Typing in detailed searches can be difficult on a mobile but broad searches can return to many items. I think searches should have some automatic restrictions on them such as letting user pick category search terms from a list of manageable size. If the searches cannot be restricted to a reasonable range, their results should be displayed in a hierarchy as well.
How would you put this question to
display inventory items to include
them on an invoice?
I would use a switchable view. On the iPhone that would be a tabbar. One tab would have your invoice and the other tab would have the hierarchal navigation for the inventory system. As you selected the items in the inventory tab, it would add them to the invoice tab. (If you use a properly configured data model, this will occur automatically.) The user could easily switch back and forth from adding items from the inventory to viewing their invoice.
Edit01:
I am unfamiliar with Android but on the iPhone you can have an index for very large tables which lets you jump down tables that might be hundreds of entries long. Look at contact app for an example of the index.
Of course, the index is actually just a disguised hierarchy. In the case of the contacts, there is a two level hierarchy of the contacts group alphabetically and then the contacts starting with each letter.
Edit02:
You haven't addressed the implication on data maintenance. If
you add a whole lot of categories
against inventory items, there is a
high overhead on maintaining those
categories for the end user: Inventory
Group > sub-group > sub-group >
sub-group > sub-group > individual
item The end user needs to define and
maintain the hierarchy and then
correctly categorise each inventory
item into each category. This is a big
job.
Well, you didn't ask about maintenance and update. You asked how to display large amounts of data of which the user only needs to select only one record.
However, to answer that question, I would again repeat that since all data sets have natural categories in them, you can always find these categories programmatically so that it happens automatically. In the case of a client list, you would have attributes of name, address, phone number, job type, frequency of contact, importance etc by which the software could automatically categorize the clients into a hierarchy. Every single client management program in the world uses some type of automatic categorization to break the data into manageable chunks.
You always have the option to just create a search but again, complex searches are harder to type in on a mobile. To get around that problem, you can use some creative search building. For example, you could just have the user type in the first letter of both the first and last name and then search on that to produce a manageable sized list.