2012-10-25 2 views
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); 
} 

내가 어떤 도움을 매우 감사 할 것입니다!

답변

1

우리는 신중한 빌딩 용 건축물 List이어야합니다. 우리가 잘못한 것을 만들면 예상보다 더 일할 수 있습니다. 나는 당신이 당신은 또한 당신의 페인트 방법을 다시 작성할 수 있습니다이

LWUIT Blog ListRender

에 살펴하는 것이 좋습니다. 당신은 목록의 속도가 증가합니다.