2012-12-06 37 views
0

我想在彈出屏幕中放置一個列表字段。該清單正常。但是當我點擊列表的特定行時,它不會觸發任何事件。展示了一個對話框。但它也不起作用。這裏是我的代碼:列表行單擊不在彈出屏幕中工作

public class AttachmentListPopup extends PopupScreen implements FieldChangeListener{ 

    private ListField _listField; 
    private Vector _listElements; 
    public AttachmentListPopup() 
    { 
     super(new VerticalFieldManager()); 
     _listElements = new Vector(); 
     _listField = new ListField(); 
     ListCallback _callback = new ListCallback() 
     { 

      public boolean navigationClick(int status, int time) 
      { 
        int index = _listField.getSelectedIndex(); 
        if(index == 0) 
        { 
         Dialog.alert("Grocery Clicked"); 
        } 

        else if(index == 1) 
        { 
         Dialog.alert("To Do's Clicked"); 
        } 
        return true; 
      } 
     }; 
     _listField.setCallback(_callback); 
     initializeList(); 
     add(_listField); 
    } 

    private void initializeList() 
    { 
     String itemOne = "Grocery"; 
     String itemTwo = "To Do's"; 
     _listElements.addElement(itemOne); 
     _listElements.addElement(itemTwo); 
     _listField.setSize(_listElements.size()); 
     _listField.setRowHeight(Display.getHeight()/6); 
    } 

    private class ListCallback implements ListFieldCallback 
    { 
     public void drawListRow(ListField list, Graphics g, int index, int y, int w) 
     { 
      y = y +20; 
      String text = (String)_listElements.elementAt(index); 
      g.drawText(text, (Display.getWidth() - getFont().getAdvance(text))/2, y, 0 , w); 
     } 
     public Object get(ListField list, int index) 
     { 
      return _listElements.elementAt(index); 
     } 
     public int indexOfList(ListField list, String prefix, int string) 
     { 
      return _listElements.indexOf(prefix, string); 
     } 
     public int getPreferredWidth(ListField list) 
     { 
      return Display.getWidth(); 
     } 
    } 
    public void fieldChanged(Field field, int context) { 
     // TODO Auto-generated method stub 

    } 

} 

這將是,如果你發現了問題.. 感謝很大的幫助。

回答

0

終於我能夠解決這個問題。我正在編寫列表視圖的導航點擊。而現在它工作正常..

這是我更新的代碼:

public class AttachmentListPopup extends PopupScreen implements FieldChangeListener{ 

private ListField _listField; 
private Vector _listElements; 
public AttachmentListPopup() 
{ 
    super(new VerticalFieldManager()); 
    _listElements = new Vector(); 
    _listField = new ListField(); 
    ListCallback _callback = new ListCallback(); 
    _listField.setCallback(_callback); 
    initializeList(); 
    add(_listField); 
} 

protected boolean navigationClick(int arg0, int arg1) { 
    // TODO Auto-generated method stub 

    int index = _listField.getSelectedIndex(); 
    if(index == 0) 
    { 
     UiApplication.getUiApplication().popScreen(this); 
     Logger.out("AttachmnentList", "first row clicked"); 
     Dialog.alert("Grocery Clicked"); 
    } 

    else if(index == 1) 
    { 
     Dialog.alert("To Do's Clicked"); 
    } 
    return super.navigationClick(arg0, arg1); 
} 

private void initializeList() 
{ 
    String itemOne = "Grocery"; 
    String itemTwo = "To Do's"; 
    _listElements.addElement(itemOne); 
    _listElements.addElement(itemTwo); 
    _listField.setSize(_listElements.size()); 
    _listField.setRowHeight(Display.getHeight()/6); 
} 

private class ListCallback implements ListFieldCallback 
{ 
    public void drawListRow(ListField list, Graphics g, int index, int y, int w) 
    { 
     y = y +20; 
     String text = (String)_listElements.elementAt(index); 
     g.drawText(text, (Display.getWidth() - getFont().getAdvance(text))/2, y, 0 , w); 
    } 
    public Object get(ListField list, int index) 
    { 
     return _listElements.elementAt(index); 
    } 
    public int indexOfList(ListField list, String prefix, int string) 
    { 
     return _listElements.indexOf(prefix, string); 
    } 
    public int getPreferredWidth(ListField list) 
    { 
     return Display.getWidth(); 
    } 
} 
public void fieldChanged(Field field, int context) { 
    // TODO Auto-generated method stub 

} 

} 
0

看一看this,這是ListField實現的一個很好的例子,因爲我在Mac上,我不能運行代碼。希望它可以幫助你。

+0

感謝這個例子。但是我想在彈出窗口中實現它。我的代碼沒有得到什麼錯誤.. –