2010-08-26 69 views
3

是否可以根據以下設計自定義Objectfieldlist?如何自定義ObjectListField?

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

行名稱將在比行詳細信息更大的字體

基本上我需要2行文字在ObjectListField一行。**或任何其他方法或建議,因爲我可能是錯的,請**引導我緊迫,並且是黑莓發展的一些新鮮事物。

回答

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"); 
    }