2011-01-06 23 views
0

右側のテキストと左側の画像を含むカスタマイズされたリストフィールドを表示しています。画像はURLから動的に取り込まれています。実際に処理を行い、処理された画像を空の画像の上に置きます。画像はリストフィールドに表示されますが、処理された画像を見るにはキーを押すか、リストフィールドの項目をクリックします。処理後の画像が自動的にリストフィールドに表示されます。間違っている場所を教えてもらえますか?URLから画像を表示するカスタマイズされたリストフィールド

import java.util.Vector; 
import net.rim.device.api.system.Bitmap; 
import net.rim.device.api.system.Display; 
import net.rim.device.api.ui.ContextMenu; 
import net.rim.device.api.ui.DrawStyle; 
import net.rim.device.api.ui.Field; 
import net.rim.device.api.ui.Font; 
import net.rim.device.api.ui.Graphics; 
import net.rim.device.api.ui.Manager; 
import net.rim.device.api.ui.MenuItem; 
import net.rim.device.api.ui.UiApplication; 
import net.rim.device.api.ui.component.BitmapField; 
import net.rim.device.api.ui.component.Dialog; 
import net.rim.device.api.ui.component.LabelField; 
import net.rim.device.api.ui.component.ListField; 
import net.rim.device.api.ui.component.ListFieldCallback; 
import net.rim.device.api.ui.component.NullField; 
import net.rim.device.api.ui.container.FullScreen; 
import net.rim.device.api.ui.container.MainScreen; 
import net.rim.device.api.ui.container.VerticalFieldManager; 
import net.rim.device.api.util.Arrays; 
import net.rim.device.api.ui.component.ListField; 

public class TaskListField extends UiApplication { 
    // statics 
    // ------------------------------------------------------------------ 
    public static void main(String[] args) { 
     TaskListField theApp = new TaskListField(); 
     theApp.enterEventDispatcher(); 
    } 

    public TaskListField() { 
     pushScreen(new TaskList()); 
    } 

} 

class TaskList extends MainScreen implements ListFieldCallback { 
    private Vector rows; 
    private Bitmap p1; 
    private Bitmap p2; 
    private Bitmap p3; 
    String Task; 
    ListField listnew = new ListField(); 
    private VerticalFieldManager metadataVFM; 
    TableRowManager row; 



    public TaskList() { 
     super(); 
     URLBitmapField artistImgField; 
     listnew.setRowHeight(80); 
     listnew.setCallback(this); 
     rows = new Vector(); 
     for (int x = 0; x <3; x++) { 

       row = new TableRowManager(); 

      artistImgField = new URLBitmapField(Bitmap 
        .getBitmapResource("res/images/bg.jpg")); 

      row.add(artistImgField); 

      String photoURL = "someimagefrmurl.jpg"; 
      Log.info(photoURL); 

      // strip white spaces in the url, which is causing the 
      // images to not display properly 
      for (int i = 0; i < photoURL.length(); i++) { 
       if (photoURL.charAt(i) == ' ') { 
        photoURL = photoURL.substring(0, i) + "%20" 
          + photoURL.substring(i + 1, photoURL.length()); 
       } 
      } 
      Log.info("Processed URL: " + photoURL); 
      artistImgField.setURL(photoURL); 



      LabelField task = new LabelField("Display"); 

      row.add(task); 

      LabelField task1 = new LabelField(
        "Now Playing" + String.valueOf(x)); 


      Font myFont = Font.getDefault().derive(Font.PLAIN, 12); 
      task1.setFont(myFont); 

      row.add(task1); 


      rows.addElement(row); 
     } 
     listnew.setSize(rows.size()); 


     this.add(listnew); 
     //listnew.invalidate(); 
    } 

    // 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, listnew.getRowHeight()); 
    } 
    protected void drawFocus(Graphics graphics, boolean on) { 
    } 



    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) { 
      // set the size and position of each field. 
      int fontHeight = Font.getDefault().getHeight(); 
      int preferredWidth = getPreferredWidth(); 

      // start with the Bitmap Field of the priority icon 
      Field field = getField(0); 
      layoutChild(field, 146,80); 
      setPositionChild(field, 0, 0); 

      // set the task name label field 
      field = getField(1); 
      layoutChild(field, preferredWidth - 16, fontHeight + 1); 
      setPositionChild(field, 149, 3); 

      // set the list name label field 
      field = getField(2); 
      layoutChild(field, 150, fontHeight + 1); 
      setPositionChild(field, 149, fontHeight + 6); 


      setExtent(360, 480); 

     } 

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

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

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

    public int getPreferredWidth(ListField listField) { 

    return 0; 
    } 

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

} 
+0

可能重複実りませんでした/ question/4615538/listfield-display-image-from-url) –

答えて

0

フィールドのvalidate()メソッドを呼び出してみてください。

+0

ありがとう、私は疑問があるフィールドの検証または無効化メソッドを呼び出す必要がありますか? – arunabha

0

http://stackoverflow.com(i)が(私はすなわちrowmanager.invalidateそれを追加ミリアンペアマネージャーにinvalidateメソッドを呼び出した。しかし、それは、[URLからListFieldを表示画像]の

+0

こんにちはアナルハ、これで運がいい? – ayachama

関連する問題