私はリストに次のコードを使用しています。RichTextField
リストのアイテムに使用しました。
public class ListScreen extends MainScreen {
private UiApplication application;
private VerticalFieldManager listManager;
/**
*
*/
public ListScreen() {
super(NO_VERTICAL_SCROLL | NO_HORIZONTAL_SCROLL | USE_ALL_HEIGHT
| USE_ALL_WIDTH);
// TODO Auto-generated constructor stub
this.application = UiApplication.getUiApplication();
LabelField screenHeading = new LabelField("Category",
FIELD_HCENTER) {
protected void paint(net.rim.device.api.ui.Graphics g) {
g.setColor(Color.WHITE);
super.paint(g);
}
};
final VerticalFieldManager labelMngr = new VerticalFieldManager(USE_ALL_WIDTH);
labelMngr.setBackground(BackgroundFactory
.createBitmapBackground(LangValue.labelbg));
labelMngr.add(screenHeading);
labelMngr.setPadding(5, 0, 5, 0);
add(labelMngr);
try {
listManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL
| Manager.VERTICAL_SCROLLBAR) {
protected void sublayout(int maxWidth, int maxHeight) {
int width = Display.getWidth();
int height = Display.getHeight()
- labelMngr.getHeight();
super.sublayout(width, height);
setExtent(width, height);
}
};
listManager.setPadding(5, 0, 5, 0);
int i=0;
RichTextField rtf;
Background background = BackgroundFactory
.createSolidBackground(Color.WHITE);
Border border = BorderFactory.createSimpleBorder(new XYEdges(0, 0,
2, 0));
CategoryHelper categoryHelper = new CategoryHelper();
final String[][] cetegoryList = categoryHelper.getCategoryList();
for(; i < cetegoryList.length ; i++) {
rtf = new RichTextField(cetegoryList[i][1], Field.FOCUSABLE) {
protected boolean navigationClick(int status, int time) {
fieldChangeNotify(1);
return true;
}
protected boolean touchEvent(
net.rim.device.api.ui.TouchEvent message) {
if (TouchEvent.CLICK == message.getEvent()) {
FieldChangeListener listener = getChangeListener();
if (null != listener)
listener.fieldChanged(this, 1);
}
return super.touchEvent(message);
}
};
rtf.setBackground(Field.VISUAL_STATE_NORMAL, background);
rtf.setBorder(border);
rtf.setPadding(1, 2, 1, 3);
rtf.setCookie(new Category(Integer.parseInt(cetegoryList[i][0]),cetegoryList[i][1]));
rtf.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field field, int context) {
// Dialog.alert("play the video");
// System.out.print("play the video");
// code for play video
}
});
listManager.add(rtf);
}
if (i == 0) {
listManager.add(new RichTextField("No word found."));
}
add(listManager);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
シミュレーターでは問題なく動作しています。リストをスクロールして、スクロールすることで任意のアイテムにフォーカスを設定でき、フォーカスされたアイテムに青いマークが付けられます。しかし、BBデバイスをテストしているとき、アイテムはフォーカスされていますが、フォーカスされた状態は表示されず、色も変わらないため、ユーザーはどちらがフォーカスされているかを識別できません。私のコードの問題は何ですか?