I’m building an app that will use an expandable listview as the main user interface, in the following way structure:
*A la carte:
– Rolls:
+ Salmon
+ 2.95
+ Tuna
– Nigiri:
+ Salmon
+ YellowTail
etc.
I build an XML whose elements matches this structure, as follows:
<type type = "A la Carte>
<option option = "Rolls">
<item>
<name> Salmon</name>
<price> 2.95 </price>
</item>
</option>
</type
(don’t pay attention to any xml errors – I typed this from memory but the XML does work).
I am using SAXParser to parse the XML. The question is, what structure should I parse the data into?
The menu list is not large (a total of 100 elements across categories) so I thought I would create a set of nested arraylists as follows:
arraylist(types) contains (arraylist(options) contains (arraylist items) contains array(name, price).
This structure reproduces the order in which I’llbe calling on the data to the ListView; it also matches the way the data will be presented in the confirmation sheet; and it matches the structure of the SQLite I will be passing to the server fulfill the order.
My question is, at this size list and this amount of nestings, will performance be seriously depleted on the app? Notably, will this chew out battery life?
I’m really looking forward to your thoughts!
Note: one thing to remember is I’d like to reuse this structure for other services; for example let’s say my cafeteria has a barbecue special; I’d like to be able to insert an XML file with a similar structure (but different text since it will be barbecue -themed) and minimally alter the code in order to read it.
I’m seeing four nested ArrayLists, which will definitely start to degrade performance, and it will use extra battery life finding all those array indeces. Consider using other data types–BasicNameValuePair for (name, price), LinkedList for items, options, and types. This will run faster. I would probably make a simple Item class that holds the BasicNameValuePair (name,price) to better organize the program.
If order is not important, I would definitely use HashMap instead of LinkedList, as it is much quicker to put and access elements by name.
If they will always be in alphabetical order, use TreeMap as it is blazing fast and automatically puts everything in alphabetical order.