trackwheel. The user selects the highlighted item by pressing the spacebar or using menu options.
For a Multiple-type List on the BlackBerry 5810 Handheld, no selection events are generated when
pressing the spacebar to select an item. In addition, choosing Change Option from the menu has
the same effect as pressing the spacebar: It changes the selected item but does not generate an
event. This behavior is consistent with the MIDP documentation.
For an Exclusive-type List, no selection events are generated when pressing the spacebar to select
an item. However, in contrast with the Multiple-type List, there were no menu items to choose from.
This behavior is consistent with the MIDP documentation, though inconsistent with the
implementation of the Multiple-type List.
For an Implicit-type List, selection events are generated when you choose Select from the menu.
Pressing the spacebar has no effect. This behavior is consistent with the MIDP documentation.
Differing List controls: Can they be reconciled?
The List control behavior differs from device to device. In addition, its behavior on the Palm device is
not consistent with its documented behavior. On the iPAQ device, the List control’s behavior is
consistent with the MIDP documentation; however, the fact that the Implicit-type List does not
respond to the touchscreen and requires the use of the five-way hardware button is inconsistent
and aggravating. The BlackBerry implementation is also consistent with the documentation; however,
the menus available under the three types of List are not consistent. The Multiple type contains a
Change Option menu item, the Exclusive type contains no menu items, and the Implicit type
contains a Select menu item.
Other MIDP implementations may also provide inconsistent behavior; you should not assume that
they all have the same limitations described here.
ChoiceGroup: An alternative to List
Because of the problems associated with the List control on the devices I used, I realized that I
could not use that control in a cross-platform application. Instead, I use the ChoiceGroup control
to display a list of choices to the user. You can create either a Multiple- or an Exclusive-type
ChoiceGroup control. Like their corresponding List types, these types should not generate selection
events when the user chooses items. For the sample applications, I used an Exclusive-type
ChoiceGroup, since I only wanted the user to be able to make one selection from each list. Then, I
provided different Command objects that, when selected, would take action based on which item in
the ChoiceGroup was selected.
There is one more trick you’ll need to keep in mind in order to have one program execute on all
three devices we’re considering here. A device running the BlackBerry OS can only make an HTTP
connection from a secondary thread and not on the main thread. Palm OS4 and Pocket PC 2002
devices have no such restriction.
I initially attempted to have my applications dynamically determine which device they were running
on and create a secondary thread only when running on the BlackBerry platform. However, this
technique itself ran into a problem: the System.getProperty(“os.version”); call returned a null value
on the BlackBerry platform. Under the Pocket PC 2002 and Palm OS4 operating systems, this
method call returned valid values; however, I did not want to assume that a null return from a System.getProperty(“os.version”); call always implied the need for a secondary thread for HTTP