如何在BlackBerry应用程序中显示可以选择列表项以便进一步操作的项目列表?
答案 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”。