2012-05-22 2 views
0

Я очень новый для ежевики, я хочу добавить элемент динамически его в список, я добавить элемент статический в поле списка, но я хочу, чтобы некоторые предметы в динамически здесь мой кодеДобавить объект динамически в ежевика поля списка

ListCallBack. Java

import java.util.Vector; 

import net.rim.device.api.system.Display; 
import net.rim.device.api.ui.Color; 
import net.rim.device.api.ui.Graphics; 
import net.rim.device.api.ui.component.ListField; 
import net.rim.device.api.ui.component.ListFieldCallback; 

public class ListCallBack implements ListFieldCallback{ 

private Vector listElements = new Vector(); 
public void drawListRow(ListField listField, Graphics graphics, int index, 
     int y, int width) { 
    // TODO Auto-generated method stub 
    String text = (String)listElements.elementAt(index); 
    graphics.drawText(text, 0, y, 0, width); 
// Draw a line separator above each field except the first one 
    if (index != 0) { 
     graphics.setColor(Color.BLACK); 
     graphics.drawLine(0, y, width, y); 
    } 

} 

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

public int getPreferredWidth(ListField listField) { 
    // TODO Auto-generated method stub 
    return Display.getWidth(); 
} 

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

public void insert(String toInsert, int index) { 
    listElements.insertElementAt(toInsert, index); 
} 

public void erase() { 
    listElements.removeAllElements(); 
} 

}

и ListView.java

listItem = new ListField(); 
listCallBack =new ListCallBack(); 
listItem.setCallback(listCallBack); 

listItem.insert(0); 
listCallBack.insert("Can't Text Now Driving", 0);  
listItem.insert(1); 
listCallBack.insert("Going to school", 1);  
listItem.insert(2); 
listCallBack.insert("Picking Up the Kids", 2); 
add(listItem); 

Кто-нибудь может мне помочь?

ответ

2

Вы можете вызвать invalidate() или invalidate (int index) объекта ListField для проверки изменений. Просто попробуйте следующие

// after calling insert(int index) call 
listItem.invalidate(index); 

// and after calling erase call 
listItem.invalidate(); 
1

, если вы хотите, чтобы показать новые элементы в поле Списка затем добавить элемент в вектор (в вашем случае добавить к listElements) затем вызвать SetSize() метод на объекте ListField с размером увеличенный вектор.

listItem.setSize(listElements.size()); 

Вы не напрямую добавляете элементы в список. вы добавляете его в свою коллекцию или массив. когда когда-либо drawlist будет вызываться для строки, он считывает данные из коллекции и выводит себя.

так просто сделать следующие шаги,

listElements.add(Object); 

listItem.setSize(listElements.size()); 

вы можете назвать недействительным над ITEMLIST.

Я надеюсь, что я мог бы дать вам иметь представление о том, чтобы вы могли найти способ ...

дайте мне знать, если у вас есть какие-либо сомнения.

Смежные вопросы