天天看點

黑莓上ListField的增加和删除

今天群裡有人說删除的時候總是從最後一個listfield删除,而不管目前光标在哪個object,于是空下來寫了一下,很簡單的實作了。

程式比較簡單,數組上下限等判斷沒有加。

PS:據說必須同時寫上myCallback.remove(myList.getSelectedIndex())和myList.delete(myList.getSelectedIndex())才能達到效果。

class testscreen extends MainScreen {

     private int i = 3;

     ListCallback myCallback = new ListCallback();

     private ListField myList;

        public testscreen(){

        super();

            LabelField title = new LabelField("listfieldtest",LabelField.ELLIPSIS|LabelField.USE_ALL_WIDTH);

            setTitle(title);

            myList = new ListField();

            myList.setCallback(myCallback);

            String fieldOne = "listone";

            String fieldTwo = "listtwo";

            String fieldThree = "listthree";

            myList.insert(0);

            myCallback.insert(fieldOne, 0);

            myList.insert(1);

            myCallback.insert(fieldTwo, 1);

            myList.insert(2);

            myCallback.insert(fieldThree, 2);

            add(myList);

        }

         private static class ListCallback implements ListFieldCallback {

            private Vector listElements = new Vector();

            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 p, int s) {

                return listElements.indexOf(p, s);

            }

            public int getPreferredWidth(ListField list) {

                return Graphics.getScreenWidth();

            }

            public void insert(String toInsert, int index) {

                listElements.addElement(toInsert);

            }

            public void remove(int index){

                int i;

                for(i=0;i

                {

                    System.out.println(i+"="+ (String) listElements.elementAt(i));

                }

                System.out.println("size====="+listElements.size());

                System.out.println("remove==="+listElements.elementAt(index));

                listElements.removeElementAt(index);

            }

            public void rase() {

                listElements.removeAllElements();

            }

        }

          private MenuItem newItem = new MenuItem("New", 100, 10) {

            public void run() {

            myList.insert(i);

            myCallback.insert("new",i);

            i++;

          }

        };

    private MenuItem romItem = new MenuItem("Remove", 100, 20) {

            public void run() {

            myCallback.remove(myList.getSelectedIndex());

            myList.delete(myList.getSelectedIndex());

          }

        };

        protected void makeMenu(Menu menu, int instance) {

            menu.add(newItem);

            menu.add(romItem);

       }

}