如何创建一个简单的列表

时间:2011-12-12 07:11:48

标签: blackberry

如何在BlackBerry应用程序中显示可以选择列表项以便进一步操作的项目列表?

1 个答案:

答案 0 :(得分: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”。