我搜索了很多,但没有找到黑莓中可扩展列表视图的单个链接,我知道如何在 android 中创建可扩展列表,如果有人对黑莓可扩展列表视图有想法,请帮助我。
2 回答
在 BB 上创建 List 的标准方法是使用 ListField 类。这个类非常有效,但有几个缺点
- 所有行的高度必须相同
- 所有行必须在显示器上连续
这使得很难使用这个类来复制 Android ExpandingListView。
为了在 BlackBerry 设备上复制这种外观,我建议使用一系列 VerticalFieldManager (VFM)。将一个用于整个列表,并为每个可扩展项目添加另一个。如果该项目已展开,则将子列表条目添加到关联的 VFM,当未展开时,删除子条目。
这种方法在一定程度上可以正常工作 - 如果显示大量字段,添加和删除字段会显着减慢 BB 设备。因此,如果您在列表中有 20 个项目,那就没问题了。如果您有 2000 个,当您扩展和收缩列表(添加和删除子列表项)时,它会显着降低设备速度。
您可以通过使列表项(父项和子项)尽可能高效来提高此性能。我建议您查看用于 ListStyleButtonField 的代码,您可以在此处找到:http: //supportforums.blackberry.com/t5/Java-Development/Implement-advanced-buttons-fields-and-managers/ta-p/488276
更新
只是想澄清为什么 ListField 不能直接工作,以及可能的解决方法。
ListField 的问题是每一行都有一个特定的高度。要显示子元素,您确实需要扩展父项的高度以包含子项,这是您无法做到的。因此,您不能只更新回调的绘制方法(在 ListField 中称为 drawListRow(..))来实现这种外观。另一个问题是, ListField 上的一个列表项被集中为一个实体,我假设您希望单独选择子项。
相反,在展开时,您可以添加额外的行,有效地将子项插入要绘制的列表中。您必须使用标志添加这些行,以便您的 drawListRow(..) 方法知道将它们绘制为子项。删除时反转。请注意,子项必须与其他所有项的高度相同。
在尝试了这两种方法后,我发现 VFM 方法更易于管理。我只会考虑列表足够大以影响性能的 ListField 方法。当它这么大时,谁会在他们的 BB 上滚动浏览这么多条目?如果您要达到这个数字,那么分页机制似乎对用户更友好。
如果您的意思是 BlackBerry Java SDK,请查看TreeField类。
更新:
在这种情况下,ListField将是最合适的选择。根据您的需要实现ListFieldCallback并将其附加到 ListField 实例。当用户单击“可扩展”列表项时,只需在 ListFieldCallback 中处理此事件并重新绘制您的列表实例。这是使用 ListField 类的教程。