我有一个屏幕,VerticalFieldManager
用于保存自定义管理器列表。
该屏幕还包含一个充当搜索字段的 EditField,因此当用户输入一些文本时,我的应用程序会循环遍历一组自定义管理器,并将输入的文本与数组中每个管理器的文本进行比较。
如果来自管理器的文本与输入的字符串匹配,我将该自定义管理器附加到 VerticalFieldManager。
这些是我的代码的相关部分:
EditField _editField;
TempBeanPlaces [] _placesList;
VerticalFieldManager _vfmCellPlaces;
……
这是TemBeanPlaces 的构造函数:
public TempBeanPlaces(String pPlaceName,
CellPlaceManager pCellPlaceManager) {
placeName = pPlaceName;
cellPlaceManager = pCellPlaceManager;
}
...
这段代码处理搜索:
_editField.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field field, int context) {
String text = _editField.getText().toLowerCase();
_vfmCellPlaces.deleteAll();
for (int i = 0; i < _placesList.length; i++) {
TempBeanPlaces tempBeanPlaces = _placesList[i];
if(tempBeanPlaces.getPlaceName().toLowerCase().indexOf(text) != -1) {
_vfmCellPlaces.add(tempBeanPlaces.getCellPlaceManager());
}
}
updateLayout();
}
});
当数组 _placesList 不太大(例如长度为 50)时,这可以正常工作,否则应用程序会变得太慢。
如何针对大量自定义管理器优化我的代码?例如,如果数组包含 600 个元素。
我真的需要改进这个功能。我刚刚阅读了有关 BlackBerry 中的 ListField 的信息,但是由于我已经完成了这段代码,也许我不需要用 ListFields 重写所有内容。
提前致谢!