我是blackberry的新手,我希望动态添加项目到列表视图,我在列表字段中静态添加项目,但我想动态一些项目在这里我的代码
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);
任何人都可以帮助我?
答案 0 :(得分:2)
您可以在ListField对象上调用invalidate()或invalidate(int index)来验证更改。试试看
// after calling insert(int index) call
listItem.invalidate(index);
// and after calling erase call
listItem.invalidate();
答案 1 :(得分:1)
如果要向List字段显示新项目,则将项目添加到向量(在您的情况下添加到listElements),然后使用增加的向量的大小调用listfield对象上的setsize()方法。
listItem.setSize(listElements.size());
你不直接将项目添加到列表字段。您将它添加到您的集合或数组。当drawlist被调用时,它会从集合中读取数据并自行渲染。
如此简单地执行以下步骤,
listElements.add(Object);
listItem.setSize(listElements.size());
然后你可以通过项目列表调用invalidate。
我希望我能给你一个想法,这样你就可以找到方法......
如果您有任何疑问,请与我联系。