Best way for a mobile app to display records from thousands available?
Suppose, you have a larger database of customers, such as 5000 records. Using a simple select query it can take 2-5 seconds 开发者_如何转开发on a mobile application to populate a listview with all thousands of customers available.
But the user only needs to select one, so what is the best way to select the customer? If you have a few records eg: 50 customers a scroll list for select is the best way doing this, but what are you doing to satisfy display for selecting from thousands?
How would you put this question to display inventory items to include them on an invoice?
This differs from the customer situation as you will repeatedly add inventory items to the invoice?EDIT 1
I refer with client to a database of clients / database of customersOn 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.
You do it the same way you would do it on a desktop or in a Web app: search. Let them search on partial names or other criteria and show matches. For inventory items, you search on an item code or name or category. For clients, you search on a partial name or customer code or city.
Perhaps using a filter is a good alternative? Ofcourse it depends on the situation, but it might help.
Information on making a good filter: How to dynamically update a ListView on Android
What about adding a second layer of navigation? Instead of displaying ALL clients in a single list, you could have one list display letters A - Z, clicking on a letter could then display only clients w/ last name starting in A, etc...
Another factor to consider is the complexity of the view(s) chosen to display the data. Is it possible to display the data with just plain old text views?
精彩评论