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);

誰かが私を助けることができますか?

4

2 に答える 2

2

ListFieldオブジェクトでinvalidate()またはinvalidate(int index)を呼び出して、変更を検証できます。フォローしてみてください

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

// and after calling erase call 
listItem.invalidate();
于 2012-05-24T06:53:51.647 に答える
1

リストフィールドに新しいアイテムを表示する場合は、アイテムをベクターに追加し(この場合はlistElementsに追加します)、増加したベクターのサイズでリストフィールドオブジェクトに対してsetsize()メソッドを呼び出します。

listItem.setSize(listElements.size());

リストフィールドにアイテムを直接追加しないでください。コレクションまたは配列に追加します。ドローリストが行に対して呼び出されると、コレクションからデータを読み取り、それ自体をレンダリングします。

とても簡単に次の手順を実行します、

listElements.add(Object);

listItem.setSize(listElements.size());

次に、itemlistに対してinvalidateを呼び出すことができます。

私はあなたが方法を見つけることができるようにあなたにアイデアを与えることができるといいのですが...

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-05-28T21:00:17.143 に答える