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

    }

}

あなたが問題を見つけたら、それは大きな助けになります..ありがとう。

4

2 に答える 2

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

}

}
于 2012-12-06T07:07:52.740 に答える
0

これを見てください。これは ListField 実装の良い例です。私は Mac を使用しているため、コードを実行できません。お役に立てば幸いです。

于 2012-12-06T05:55:17.913 に答える