2011-02-09 58 views
0

我开发的代码如下。在此我使用listfield,一个位图字段和一个标签字段,当我运行它时,它只显示列表字段行上的文本,但不显示图像 我不知道在哪里,我没有错,所以,PLZ,任何一个可以帮助我知道我做了错误 感谢您的帮助它只显示文本,但不显示图像

class TaskListField extends MainScreen implements ListFieldCallback { 
     private Vector rows; 
     private Bitmap p1; 
ListField list; 
     TableRowManager row; 
     public TaskListField() { 
      super(); 
      list=new ListField() { 

       protected void drawFocus(Graphics graphics, boolean on) { 
       } 

}; 
      list.setRowHeight(40); 
      list.setEmptyString("Hooray, no tasks here!", DrawStyle.HCENTER); 
      list.setCallback(this); 

      p1 = Bitmap.getBitmapResource("res/images/10.png"); 
rows = new Vector(); 

      for (int x = 1; x < 13; x++) { 
      row = new TableRowManager(); 
      LabelField task = new LabelField("" + String.valueOf(x), 
      DrawStyle.ELLIPSIS); 
    row.add(task); 
      row.add(new BitmapField(p1)); 
    rows.addElement(row); 
      } 
      list.setSize(rows.size()); 
add(list); 
     } 

     // ListFieldCallback Implementation 
     public void drawListRow(ListField listField, Graphics g, int index, int y, 
      int width) { 

      TableRowManager rowManager = (TableRowManager) rows 
      .elementAt(index); 
      rowManager.drawRow(g, 0, y, width, list.getRowHeight()); 
     } 

     private class TableRowManager extends Manager { 
      public TableRowManager() { 
      super(0); 
      } 
    public void drawRow(Graphics g, int x, int y, int width, int height) { 

      layout(width, height); 


      setPosition(x, y); 


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


      protected void sublayout(int width, int height) { 

      int preferredWidth = getPreferredWidth(); 


      Field field = getField(0); 
      layoutChild(field, 30, 30); 
      setPositionChild(field, 0, 0); 


      field = getField(1); 
      layoutChild(field, 40, 25); 
      setPositionChild(field, 120, 10); 
    setExtent(preferredWidth, getPreferredHeight()); 
      } 

      // 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 list.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; 
     } 

回答

0

确定的位图不为空?我会首先检查 - 也许它没有找到资源。

+0

只需添加到Eric的答案(因为我有没有找到资源问题)是没有必要的。如果该位图为空,并且您知道名称设置正确,并且位图位于res文件夹....子文件夹中,则可能需要将该子文件夹_include_放入项目中。右键单击文件夹,选择Build Path ... Include。心连心 – 2011-04-22 12:32:21

0

LabelField是否可以获取整个屏幕宽度(在某些情况下会这样做)?当您仅设置图像而未设置标签时,图像是否显示?

1

图像路径你把它

p1 = Bitmap.getBitmapResource (" res/images/10.png "); 

只需要

p1 = Bitmap.getBitmapResource (" 10.png ");