How to Re-Arrange ListField in Blackberry

后端 未结 2 1904
猫巷女王i
猫巷女王i 2021-01-26 05:28

How to re-arrange the items of a ListField? I want to select the item on click on Blackberry (Storm and Torch) Touch Phones. After select I want to (Move and Drag) Scroll item V

2条回答
  •  走了就别回头了
    2021-01-26 05:48

    i am also working on Custom list field. Just Click on listitem. after click U can move (selected) listItem vertically. if u want to place any where in screen than click again on trackpad. when u click it will be place on that position Checkout. here is my code.

    public class ListDemo extends MainScreen implements ListFieldCallback {
    private VerticalFieldManager vfm, vfm_List;
    private ListField myList;
    private Vector vector;
    private String[] str_arr;
    int Height = Display.getHeight();
    int Width = Display.getWidth();
    int i ;
    boolean bool = true;
    int index = 0;
    private boolean hasFocus = false;
    private boolean b = true;
    public static int curSelected ;
    Channel obj; 
    
    public ListDemo() {
        vector = new Vector();
        for (i = 0; i < 8; i++) {
            obj = new Channel();
            if (i == 0) {
                obj.setCh_icon("ajtak.jpg");
                obj.setCh_Name("NightSuite");
                obj.setCh_Move("move.png");
    
            } else if (i == 1) {
                obj.setCh_icon("cnbc.jpg");
                obj.setCh_Name("Shirts");
                obj.setCh_Move("move.png");
    
            } else if (i == 2) {
                obj.setCh_icon("zee.jpg");
                obj.setCh_Name("Jeans");
                obj.setCh_Move("move.png");
    
            } else if (i == 3) {
                obj.setCh_icon("astha.jpg");
                obj.setCh_Name("Bags");
                obj.setCh_Move("move.png");
    
            }else if (i == 4) {
                obj.setCh_icon("fox_news.jpg");
                obj.setCh_Name("Coat");
                obj.setCh_Move("move.png");
    
            }else if (i == 5) {
                obj.setCh_icon("news.jpg");
                obj.setCh_Name("Coat");
                obj.setCh_Move("move.png");
    
            } else if (i == 6) {
                obj.setCh_icon("star_news.jpg");
                obj.setCh_Name("Coat");
                obj.setCh_Move("move.png");
    
            } else {
                obj.setCh_icon("assiant.jpg");
                obj.setCh_Name("Shorts");
                obj.setCh_Move("move.png");
            }
            vector.addElement(obj);
        }
        init();
    }
    
    public void init() {
    
        vfm = new VerticalFieldManager(USE_ALL_HEIGHT | USE_ALL_WIDTH) {
    
            protected void sublayout(int maxWidth, int maxHeight) {
                super.sublayout(maxWidth, maxHeight);
                setExtent(Width, Height);
            }
        };
    
        vfm_List = new VerticalFieldManager(VERTICAL_SCROLL
                | VERTICAL_SCROLLBAR) {
            protected void sublayout(int maxHeight, int maxWidth) {
                super.sublayout(maxWidth, maxHeight);
                setExtent(Width, Height);
            }
        };
        myList = new ListField()
        {
            public  void onFocus(int direction){  
              hasFocus = true;
    
            }
            public void onUnfocus()   
            {
                hasFocus = false;  
                super.onUnfocus();  
                invalidate();  
            }  
             public void paint(Graphics g) {
                 if (hasFocus)   
                  {  
                       curSelected = getSelectedIndex(); 
    
    
                  }   
                  else   
                  {  
                      curSelected = -1;  
                  } 
                 super.paint(g);
    
            }
        };
        myList.setCallback(this);
        myList.setRowHeight(50);
        myList.setFocusListener(new FocusChangeListener() {
            public void focusChanged(Field field, int eventType) {
    
                if (bool == false) {
                    index = myList.getSelectedIndex();
                    Channel temp = (Channel) vector
                        .elementAt(index);
                    vector.removeElementAt(index);
                    vector.insertElementAt(temp, curSelected);
                    myList.invalidate();
    
                }
    
            }
    
        });
        for (int i = 0; i < vector.size(); i++) {
            myList.insert(i);
    
        }
        vfm_List.add(myList);
        vfm.add(vfm_List);
        add(vfm);
    
    }
    protected boolean navigationClick(int status, int time) {
        if(bool)
        {
            bool = false;
        }
        else
        {
            bool = true;
        }
    
    
    return true;
    } 
    
    
    public void drawListRow(ListField list, Graphics g, int index, int y, int w) 
    {
        String text = ((Channel) vector.elementAt(index)).getCh_Name();
        Bitmap arrow = Bitmap.getBitmapResource(((Channel) vector.elementAt(index)).getCh_icon());
        if(bool == false)
        {
            if (g.isDrawingStyleSet(Graphics.DRAWSTYLE_FOCUS))
            {
                Bitmap move = Bitmap.getBitmapResource(((Channel) vector.elementAt(index)).getCh_Move());
                g.drawBitmap(Width - 40, y + 13, 25, 25, move, 0, 0);
    
            }
        }
        g.setBackgroundColor(Color.LIGHTBLUE);
        g.setColor(Color.BLACK);
        g.drawBitmap(0, y + 10, 48, 35, arrow, 0, 0);
        g.drawText(text, 50, y + 18, 0, w);
        g.setColor(Color.WHITE);
        invalidate();
    
    
    }
    
    public Object get(ListField list, int index) {
        return vector.elementAt(index);
    }
    
    public int indexOfList(ListField list, String p, int s) {
        return vector.indexOf(p, s);
    }
    
    public int getPreferredWidth(ListField list) {
        return Graphics.getScreenWidth();
    }
    
    public void insert(String toInsert, int index) {
        vector.addElement(toInsert);
    }
    
    public void erase() {
        vector.removeAllElements();
    }
    

    }

    Here is another Channel Class

    public class Channel {
    
    private String ch_Name;
    private String ch_icon;
    private String ch_move;
    
    public String getCh_Name() {
        return ch_Name;
    }
    public void setCh_Name(String ch_Name) {
        this.ch_Name = ch_Name;
    }
    public String getCh_icon() {
        return ch_icon;
    }
    public void setCh_icon(String ch_icon) {
        this.ch_icon = ch_icon;
    }
    public String getCh_Move() {
        return ch_move;
    }
    public void setCh_Move(String ch_move) {
        this.ch_move = ch_move;
    }
    

    }

    Checkout its working on both touch and nontouch .

提交回复
热议问题