天天看點

BlackBerry ListField

建立清單框

使用清單框可顯示使用者可從中選擇一個或多個值的清單。

   1. 導入以下類:

      import net.rim.device.api.system.*;

      import net.rim.device.api.ui.*;

      import net.rim.device.api.ui.component.*;

      import net.rim.device.api.ui.container.*;

      import java.util.Vector;

   2. 通過擴充 UiApplication 類來建立應用程式架構。 在 main() 中,建立新類的執行個體并調用 enterEventDispatcher(),

   以啟用應用程式來接收事件。 在構造器中,調用 pushScreen 以顯示應用程式的自定義螢幕。

    CreateMenuScreen 類表示自定義螢幕(在步驟 3 中介紹)。

      public class ListFields extends UiApplication

      {

           public static void main(String[] args)

           {

               ListFields theApp = new ListFields();

               theApp.enterEventDispatcher();

           }

           public ListFields()

           {

               pushScreen(new ListFieldScreen());

           }

      }

   3. 通過擴充 MainScreen 類來建立應用程式的自定義螢幕。 在構造器中,調用 setTitle() 以顯示螢幕的标題。

    調用 add() 以在螢幕上顯示文本字段。 調用 addMenuItem() 以将菜單項添加至 MainScreen 建立的菜單。

      class ListFieldScreen extends MainScreen

      {

          private ListField _listField;

          private Vector _listElements;

          public ListFieldScreen()

          {

              setTitle("List Field Sample");

          }

      }

   4. 在螢幕構造器中,建立清單框。 使用 Vector 類建立要添加至清單框的項目數組。 使用 ListField() 類建立清單框。

    調用 add() 以将清單框添加至螢幕。 調用步驟 4 中介紹的 initializeList() 以建構清單框。

      _listElements = new Vector();

      _listField = new ListField();

      ListCallback _callback = new ListCallback();

      _listField.setCallback(_callback);

      add(_listField);

      initializeList();

   5. 使用 String 對象建立一個方法,以指定要顯示在清單框中的項目。 調用 addElement() 以将項目添加至清單。

   調用 setSize() 以指定清單框中的項目數。

      private void initializeList()

      {

          String itemOne = "List item one";

          String itemTwo = "List item two";

          _listElements.addElement(itemOne);

          _listElements.addElement(itemTwo);

          reloadList();

      }

      private void reloadList()

      {

          _listField.setSize(_listElements.size());

      }

   6. 建立實施 ListFieldCallback 接口的類。 實施 drawListRow() 以将清單框項目添加至螢幕。

    實施 get() 以傳回位于指定索引的清單框項目。 實施 indexOfList() 以傳回指定字元串的第一個比對項。

     實施 getPreferredWidth() 以檢索清單框的寬度。

      private class ListCallback implements ListFieldCallback

      {

     // 将清單框添加至螢幕

          public void drawListRow(ListField list, Graphics g, int index, int y, int w)

          {

              String text = (String)_listElements.elementAt(index);

              g.drawText(text, 0, 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();

          }

      }