views:

147

answers:

5

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 customers

A: 

Perhaps using a filter is a good alternative? Ofcourse it depends on the situation, but it might help.

Information on making a good filter: http://stackoverflow.com/questions/1737009/answer-to-making-a-nice-looking-listview-filter-on-android

sandis
Populating the list would take another 2-5 seconds each time when you launch the filter.
Pentium10
A: 

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

tambler
The problem I have is that getting back results from a large database with a LIMIT 50, takes too much time. There is a considerable lag for the end-user.
Pentium10
+1  A: 

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.

TechZen
How would you group inventory database? How would you group client database?
Pentium10
Split them alphabetically by first letter?
Christopher
I really have no idea without looking at your data. If your talking about people, you can use their names, their phone numbers, their addresses. Also, you can provide different perspectives on the same data. Look at how the iPhone contact handles contacts.
TechZen
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 itemThe end user needs to define and maintain the hierarchy and then correctly categorise each inventory item into each category. This is a big job.
Pentium10
A: 

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?

Brad Hein
I need the user to select/choose a record
Pentium10
+1  A: 

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.

CommonsWare