2011-12-12 51 views

回答

1

您想使用ListField。以下是使用ListField的代碼示例。

class CustomListField extends ListField implements ListFieldCallback 
{ 
public static int x; 
public Vector rows; 
private Bitmap p1; 
int z = this.getRowHeight(); 
public LabelField label,label2,label3,label4,label5; 
public CustomListFieldCode(int rowcount,int service_No,String text1,String time) 
{ 
    super(0, ListField.MULTI_SELECT); 
    setRowHeight(3*z); 
    setEmptyString("Hooray, no tasks here!", DrawStyle.HCENTER); 
    setCallback(this);   
    rows = new Vector(); 

    for (x = 0; x < rowcount; x++) 
    { 
     TableRowManager row = new TableRowManager(); 
     if(x%2==0) 
     row.setBackground(BackgroundFactory.createSolidBackground(Color.AQUA)); 
     label = new LabelField("Service"+x); 
     row.add(label); 
     rows.addElement(row); 
    } 
    setSize(rows.size()); 

} 

    // ListFieldCallback Implementation 
    public void drawListRow(ListField listField, Graphics g, int index, int y,int width) 
    { 
    CustomListFieldCode list = (CustomListFieldCode) listField; 
    TableRowManager rowManager = (TableRowManager) list.rows.elementAt(index);   
    rowManager.drawRow(g, 0, y, width, list.getRowHeight()); 
} 

private class TableRowManager extends Manager 
{ 
    public TableRowManager() 
    { 
    super(0); 
    } 

// Causes the fields within this row manager to be layed out then 
// painted. 
    public void drawRow(Graphics g, int x, int y, int width, int height) 
    { 
     // Arrange the cell fields within this row manager. 
     layout(width, height); 

     // Place this row manager within its enclosing list. 
     setPosition(x, y); 

     // Apply a translating/clipping transformation to the graphics 
     // context so that this row paints in the right area. 
     g.pushRegion(getExtent()); 

     // Paint this manager's controlled fields. 
     subpaint(g); 

     g.setColor(0x00CACACA); 
     //g.drawLine(0, 0, getPreferredWidth(), 0); 

     // Restore the graphics context. 
     g.popContext(); 
    } 

    // Arrages this manager's controlled fields from left to right within 
    // the enclosing table's columns. 
    protected void sublayout(int width, int height) 
    { 
     // write your code for arranging the elements of the row 
    } 

// The preferred width of a row is defined by the list renderer. 
    public int getPreferredWidth() 
    { 
     return Graphics.getScreenWidth(); 
    } 

    // The preferred height of a row is the "row height" as defined in the 
    // enclosing list. 
    public int getPreferredHeight() 
    { 
     return getRowHeight(); 
    } 
} 

public Object get(ListField listField, int index) 
{ 
    // TODO Auto-generated method stub 
    return null; 
} 

public int getPreferredWidth(ListField listField) 
{ 
    // TODO Auto-generated method stub 
    return 0; 
} 

public int indexOfList(ListField listField, String prefix, int start) 
{ 
    // TODO Auto-generated method stub 
    return 0; 
} 


} 

用於處理事件在每一行上使用「TouchEvent」。