2
저는 LWUIT의 잘 알려진 문제에 직면했습니다. 확인란 목록 렌더러가있는 목록 구성 요소가 매우 느리게 스크롤됩니다. 에뮬레이터에서 내 응용 프로그램을 테스트하는 경우 매우 원활하게 실행됩니다 (그럼에도 불구하고 스크롤 동작 중 CPU 사용률이 최대 60 %까지 증가 함). 그러나 휴대 전화에서 실행하려면 포커스 이동 사이에 몇 초가 걸립니다.LWUIT 목록이 매우 느리게 작동합니다.
는 렌더러의 코드가있다 :
목록이 포함 된 내 양식의 코드입니다public class CheckBoxMultiselectRenderer extends CheckBox implements ListCellRenderer {
public CheckBoxMultiselectRenderer() {
super("");
}
//override
public void repaint() {
}
public Component getListCellRendererComponent(List list, Object value,
int index,boolean isSelected) {
Location loc = (Location)value;
setText(loc.getLocationName());
setFocus(isSelected);
setSelected(loc.isSelected());
return this;
}
public Component getListFocusComponent(List list) {
setText("");
setFocus(true);
getStyle().setBgTransparency(Consts.BG_TRANSPARENCY);
return this;
}
}
:
protected void createMarkup() {
Form form = getForm();
form.setLayout(new BorderLayout());
form.setScrollable(false);
Label title = new Label("Choose location zone:");
title.getStyle().setMargin(5, 5, 0, 0);
title.getStyle().setBgTransparency(Consts.BG_TRANSPARENCY);
title.setAlignment(Component.CENTER);
form.addComponent(BorderLayout.NORTH, title);
list = new List(StateKeeper.getLocationsAsList());
list.setFixedSelection(List.FIXED_NONE_CYCLIC);
// list.setSmoothScrolling(true);
list.getStyle().setBgTransparency(0);
list.setListCellRenderer(new CheckBoxMultiselectRenderer());
list.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
// List l = (List)ae.getSource();
// l.requestFocus();
// l.setHandlesInput(true);
Location selItem = (Location)list.getSelectedItem();
selItem.setSelected(!selItem.isSelected());
}
});
form.addComponent(BorderLayout.CENTER, list);
}
내가 어떤 도움을 매우 감사 할 것입니다!