2011-12-20 6 views
-1
의 변화에 ​​초점을

내가 블랙 베리 OS4.5에서 개발하고 있어요 화면을 새로 고치와 "변화의 초점을 때 새로 고침 화면"소스 코드 위로블랙 베리

private void drawImageScrollView(Vector vImages) { 
    // Horizontal Field 
    HorizontalFieldManager imgScrollView = new HorizontalFieldManager(
      USE_ALL_WIDTH | HORIZONTAL_SCROLL); 
    SimpleItemData itemData = new SimpleItemData(); 
    // Get list bitmap 
    for (int i = 0; i < vImages.size(); i++) { 
     itemData = (SimpleItemData) vImages.elementAt(i); 
     BitmapField bmf = new BitmapField(itemData.getImage(), BitmapField.ACTION_INVOKE | BitmapField.FOCUSABLE) { 
      protected void drawFocus(Graphics graphics, boolean on) { 
       graphics.setColor(Color.BLUE); 
       graphics.drawRect(0, 0, getWidth() - 4, getHeight() - 4); 
       graphics.drawRect(1, 1, getWidth() - 6, getHeight() - 6); 

      } 
      // When focus on image display new information 
      protected void onFocus(int direction) { 
       // Change focus and add processing here 
       super.onFocus(direction); 
      } 

     }; 
     bmf.setPadding(2, 2, 2, 2); 
     bmf.setMargin(2, 2, 2, 2); 
     imgScrollView.add(bmf); 
    } 
    add(imgScrollView); 
} 

, 당신은 "볼 수있는 나는에 대한 질문을하는 방법 onFocus "메서드를 호출합니다. 새 데이터를 가져오고 여기에서 화면을 새로 고치고 싶지만 현재 화면을 새로 고칠 수있는 방법을 모릅니다. doPaint(), invalidate() 등의 메소드를 시도했지만 작동하지 않았습니다. @@ 이 문제에 대한 해결책이 없습니다. 할 수 있으면 도와주세요.

대단히 감사합니다 !!! 더 나은이 목적이 FocusChangeListner가 어떻게 필드를 새로하고 지정된 필드를 다시로드하는 데 도움이됩니다 다음 샘플을 관찰 사용하려면

+0

프로젝트에 따라 이미지를 변경해야 할 시험이 예 여기 http://developer.android.com/resources/tutorials/views/hello-gridview.html에서 plese 다운로드 이미지 befor을 @@ ... 도와주세요. 나는이 문제에 대한 해결책을 원한다. – Tama

답변

0

는 (내 경우에는 내가 하나 개의 레이블을했다)

전으로 이미지에 초점을 맞출 때 이제까지 예를 들어

아래쪽에있는 내 Imagescroll에 번호가 표시되어야합니다.

주 : 테스트가 용이하고 당신은 내가 popScreen 및 pushScreen하지만 내 응용 프로그램이 충돌이다 시도

public class StartUp extends UiApplication 
{ 

    public static void main(String[] args) { 
     StartUp start=new StartUp(); 
     start.enterEventDispatcher(); 
    } 
    public StartUp() 
    { 
     UiApplication.getUiApplication().pushScreen(new RefreshSCreen()); 

    } 
} 

    class RefreshSCreen extends MainScreen implements FocusChangeListener 
    { 
     HorizontalFieldManager imgScrollView; 
     VerticalFieldManager vmanager; 
     LabelField lable; 
     BitmapField bmf[]; 
     private Vector vImages=null; 
     public RefreshSCreen() { 
      vImages=new Vector(); 
      for(int i=0;i<8;i++){ 
       Bitmap image=Bitmap.getBitmapResource("sample_"+i+".jpg"); 
       vImages.addElement(image); 
      } 
      imgScrollView = new HorizontalFieldManager(
         USE_ALL_WIDTH | HORIZONTAL_SCROLL); 

       // Get list bitmap 
      bmf=new BitmapField[vImages.size()]; 
       for (int i = 0; i < vImages.size(); i++) { 

        bmf[i] = new BitmapField((Bitmap) vImages.elementAt(i), BitmapField.ACTION_INVOKE | BitmapField.FOCUSABLE) { 
         protected void drawFocus(Graphics graphics, boolean on) { 
          graphics.setColor(Color.BLUE); 
          graphics.drawRect(0, 0, getWidth() - 4, getHeight() - 4); 
          graphics.drawRect(1, 1, getWidth() - 6, getHeight() - 6); 

         } 
        }; 
        bmf[i].setFocusListener(this); 
        bmf[i].setPadding(2, 2, 2, 2); 
        bmf[i].setMargin(2, 2, 2, 2); 
        imgScrollView.add(bmf[i]); 
       } 
       add(imgScrollView); 
       vmanager=new VerticalFieldManager(); 
       add(vmanager); 


     } 

     public void focusChanged(Field field, int eventType) { 

      for(int i=0;i<vImages.size();i++){ 
       if(field==bmf[i]){ 
        if(bmf[i].isFocus()){ 
         synchronized (UiApplication.getEventLock()) { 
          vmanager.deleteAll(); 
          vmanager.invalidate(); 
          lable=new LabelField("Hi I am reference of Image number "+i); 
          vmanager.add(lable); 
         } 
        } 
       } 
      } 
     } 
    } 
+0

대단히 고마워! – Tama