天天看点

黑莓上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);

       }

}