Как настроить ListFieldCallBack? - PullRequest
0 голосов
/ 25 ноября 2011

Я написал класс, который реализует 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 Ответ

1 голос
/ 25 ноября 2011

Вы должны изменить ListFieldCallback.drawListRow(ListField listField, Graphics graphics, int index, int y, int width), чтобы нарисовать это.

Используйте net.rim.device.api.ui.Graphics API для рисования, что вы хотите.

...