ListField Blackberry

25 views
Skip to first unread message

Adhit

unread,
Aug 27, 2014, 5:36:49 AM8/27/14
to blackberry...@googlegroups.com

Dear Rekan Semuanya,

Selamat Sore, saya ingin bertanya, saya ingin membuat sebuah list field yang akan menampilkan data berupa list seperti gambar dibawah ini :


 tetapi ada teks yang jika terlalu panjang akan terpotong atau ada titik dibagian akhirnya, sehingga teks tidak turun kebawah. berikut kodingan yg saya pakai untuk membuat list tsb:

import java.util.Vector;  

import net.rim.device.api.system.Display;
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.component.LabelField;
import net.rim.device.api.ui.component.ListField;  
import net.rim.device.api.ui.component.ListFieldCallback;  

public class CustomTableField extends ListField implements ListFieldCallback {  

     
TableHeaderRowManager row;  
     
Vector rows;
     
private int dataType;
     
private int bgColor;
     
private boolean usingLineHorizontal;
     
private boolean usingLineVertical;
     
int nColumn;
     
     
public CustomTableField(int dataType, int bgColor){
               
this.dataType = dataType;
               
this.bgColor = bgColor;
         
          setEmptyString
("This ListField has No Data",DrawStyle.HCENTER);  
          setCallback
(this);  
          setRowHeight
(30);  
         
Font.getDefault();  
         
          rows
= new Vector();  
          row
= new TableHeaderRowManager();  
                   
          nColumn
= 5;
          row
.add(new ColorLabelField("00123", USE_ALL_WIDTH|DrawStyle.VCENTER|DrawStyle.HCENTER|DrawStyle.ELLIPSIS|NON_FOCUSABLE, Themes.COLOR_TEXT_HEADER_TABLE, Font.PLAIN, Themes.fontSize-1, false));
          row
.add(new ColorLabelField("15 Januari 2012", USE_ALL_WIDTH|DrawStyle.VCENTER|DrawStyle.HCENTER|DrawStyle.ELLIPSIS|NON_FOCUSABLE, Themes.COLOR_TEXT_HEADER_TABLE, Font.PLAIN, Themes.fontSize-1, false));
          row
.add(new ColorLabelField("Pembayaran Biaya Kuliah", USE_ALL_WIDTH|DrawStyle.VCENTER|DrawStyle.HCENTER|DrawStyle.ELLIPSIS|NON_FOCUSABLE, Themes.COLOR_TEXT_HEADER_TABLE, Font.PLAIN, Themes.fontSize-1, false));
          row
.add(new ColorLabelField("2.000.0000", USE_ALL_WIDTH|DrawStyle.VCENTER|DrawStyle.HCENTER|DrawStyle.ELLIPSIS|NON_FOCUSABLE, Themes.COLOR_TEXT_HEADER_TABLE, Font.PLAIN, Themes.fontSize-1, false));
          row
.add(new ColorLabelField("21312323211111232323", USE_ALL_WIDTH|DrawStyle.VCENTER|DrawStyle.HCENTER|DrawStyle.ELLIPSIS|NON_FOCUSABLE, Themes.COLOR_TEXT_HEADER_TABLE, Font.PLAIN, Themes.fontSize-1, false));

          rows
.addElement(row);  
          setSize
(rows.size());  
     
}  
     
public void drawListRow(ListField listField, Graphics graphics, int index,  
               
int y, int width) {  
         
// TODO Auto-generated method stub  
         
CustomHeaderTableField list = (CustomHeaderTableField) listField;  
          graphics
.setColor(bgColor);
           graphics
.fillRect(0, y, width, list.getRowHeight());
           
TableHeaderRowManager rowManager = (TableHeaderRowManager)list.rows.elementAt(index);  
          rowManager
.drawRow(graphics,0,y,width,list.getRowHeight());  
     
}  
     
public Object get(ListField listField, int index) {  
         
// TODO Auto-generated method stub  
         
return rows.elementAt(index).toString();  
     
}  
     
public int getPreferredWidth(ListField listField) {  
         
// TODO Auto-generated method stub  
         
return Graphics.getScreenWidth();  
     
}  
     
public int indexOfList(ListField listField, String prefix, int start) {  
         
// TODO Auto-generated method stub  
         
return -1;  
     
}  
     
   
public void setUsingLineHorizontal(boolean usingLineHorizontal) {
       
this.usingLineHorizontal = usingLineHorizontal;
   
}
   
public boolean isUsingLineHorizontal() {
       
return usingLineHorizontal;
   
}

   
public void setUsingLineVertical(boolean usingLineVertical) {
       
this.usingLineVertical = usingLineVertical;
   
}
   
public boolean isUsingLineVertical() {
       
return usingLineVertical;
   
}

   
private class TableHeaderRowManager extends Manager  
     
{  
         
public TableHeaderRowManager()  
         
{  
             
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(Themes.COLOR_SEPARATOR);  
         
//g.drawLine(0, height-1, getPreferredWidth(), height-1);  
         
//g.drawLine(40, 0, 40, getPreferredHeight());  
         
// 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)  
       
{  
         
int fontHeight = Font.getDefault().getHeight();  
         
int preferredWidth = getPreferredWidth();  
         
int widthColumn = preferredWidth/nColumn;
         
Field field = getField(0);  
             
         
int padding = 3;
         
          layoutChild
(field, widthColumn, 1);  
          setPositionChild
(field, 2, 5);  
         
          field
= getField(1);
          layoutChild
(field, widthColumn, 1);  
          setPositionChild
(field, widthColumn+padding, 5);  
         
          field
= getField(2);
          layoutChild
(field, widthColumn, 1);  
          setPositionChild
(field, widthColumn*2+padding, 5);  
         
          field
= getField(3);
          layoutChild
(field, widthColumn-10, 1);  
          setPositionChild
(field, widthColumn*3+padding, 5);  
         
          field
= getField(4);
          layoutChild
(field, widthColumn, 1);  
          setPositionChild
(field, widthColumn*4-padding, 5);  
         
          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 getRowHeight();  
       
}  
     
}  
}  


Mungkin dari rekan semuanya ada yg tahu bagaimana caranya agar teks tsb bisa turun ke bawah, mohon pencerahannya

Adhit

unread,
Aug 27, 2014, 5:44:31 AM8/27/14
to blackberry...@googlegroups.com

mirza akhena

unread,
Aug 27, 2014, 8:51:39 PM8/27/14
to blackberry...@googlegroups.com
Hello Adhit

itu namanya "wrapping text"

coba lihat solusi disini:

atau googling aj dengan kata kunci tsb..

good luck..




--
Website: http://bbdevid.org
---
Anda menerima pesan ini karena berlangganan grup "Indonesia Blackberry Developer" di Google Grup.
Untuk berhenti berlangganan dan berhenti menerima email dari grup ini, kirim email ke blackberry-devel...@googlegroups.com.
Untuk mengeposkan ke grup ini, kirim email ke blackberry...@googlegroups.com.
Kunjungi grup ini di http://groups.google.com/group/blackberry-developer.
Untuk melihat diskusi ini di web, kunjungi https://groups.google.com/d/msgid/blackberry-developer/fa3c63cc-ec63-4ce7-ac1b-7f7a944959fa%40googlegroups.com.

Untuk opsi lebih lanjut, kunjungi https://groups.google.com/d/optout.

Adhit

unread,
Sep 1, 2014, 4:01:42 AM9/1/14
to blackberry...@googlegroups.com
Terima Kasih Mas Mirza, saya coba dlu... :)
 
          setPositionChild
(field, widthColumn*2+padding, 5<span style="color:#660"
...
Reply all
Reply to author
Forward
0 new messages