如何自定义ListFieldCallBack?

时间:2011-11-25 05:15:51

标签: blackberry listfield

我编写了一个实现ListFieldCallBack的类,如

import java.util.Vector;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.component.ListField;
import net.rim.device.api.ui.component.ListFieldCallback;


    class ListCallBack implements ListFieldCallback
    {
        private Vector listelements = new Vector();

        public void drawListRow(ListField listField, Graphics graphics, int index, int y, int width) 
        {
            String text = (String)listelements.elementAt(index);
            graphics.drawText(text,0,y,0,width);
        }

        public Object get(ListField listField, int index) 
        {
            return listelements.elementAt(index);
        }

        public int indexOfList(ListField listField, String prefix, int start) 
        {
            return listelements.indexOf(prefix, start);
        }

        public int getPreferredWidth(ListField listField) 
        {
            return Graphics.getScreenWidth();
        }

        public void insert(String toInsert, int index)
        {
            listelements.addElement(toInsert);
        }   
        public void erase()
        {
            listelements.removeAllElements();
        }   
    }   

在我的构造函数中,主类被编码为

helloWorld()
{
    mylist = new ListField();
    ListCallBack myCallBack = new ListCallBack();
    mylist.setCallback(myCallBack);
    for(int i = 0; i<array.length;i++)//array is a string array
    {
        list_category.insert(i);
        myCallBack.insert(array[i], i);
    }
    this.add(list_category);
}

这可以正常工作..

喜欢,我得到像

这样的输出
Aby
Eric
Allay
vine

但我想在列表中显示的每一行中为该数组的下一个数组添加另一个字符串..我该怎么做?

例如,就像我想要的屏幕输出一样,

Aby     :  Smart
Eric    :  0000
Allay   :  9789
vine    :  Like

我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您应该更改ListFieldCallback.drawListRow(ListField listField, Graphics graphics, int index, int y, int width)以绘制该内容。

使用net.rim.device.api.ui.Graphics API绘制您想要的任何内容。