如何自定义ObjectListField?

时间:2010-08-26 09:50:55

标签: listview blackberry blackberry-eclipse-plugin

是否可以根据以下设计自定义Objectfieldlist?

         ----------------------------
ROW#1    ROW NAME
         row details
         ---------------------------
ROW#2    ROW NAME
         row details
         ---------------------------  
ROW#3    ROW NAME
         row details
         ---------------------------

行名称将以比行详细信息更大的字体

基本上我在ObjectListField的一行中需要2个文本行。**或任何其他方法或建议,因为我可能是错的,**请指导我它的紧急,并且是Blackberry Development的新功能。

1 个答案:

答案 0 :(得分:5)

ObjectListField实际上并不是正确的方法 - 当你需要一个简单的字符串列表时,它真的被设计为ListField的快速版本。

您应该扩展ListField本身,并提供自己的ListFieldCallback实现,根据您的数据模型呈现您的列表。使用ListField.setCallback设置回调。

ListFieldCallback.drawListRow为您提供Graphics上下文,因此您可以绘制任何内容,包括多行文字。另外,请确保在列表字段上调用ListField.setRowHeight以使行足够高以容纳2行文本(默认高度为字体高度,因此您只有1行文本空间)。

示例代码类似于(这不完整,如果没有其他代码则无法编译):

ListField myListField = new ListField();
myListField.setRowHeight(getFont().getHeight() * 2)

myListField.setCallback(new ListFieldCallback() {
    public void drawListRow(ListField listField, Graphics graphics, int index, int y, int width) {
       // draw the first line of text
       graphics.drawText(0, y, "ROW " + rowNumber);
       graphics.drawText(20, y, "ROW NAME");
       graphics.drawText(20, y + getFont().getHeight(), "row details"); 
    }