Welcome!

Welcome to the official BlackBerry Support Community Forums.

This is your resource to discuss support topics with your peers, and learn from each other.

inside custom component

Java Development

Reply
Developer
sowjanya1919
Posts: 109
Registered: ‎08-21-2012
My Device: Blackberry curve
My Carrier: company

Ui while displaying taking time

I am having a for loop of 20 elements where inside that i am display an image and 3 lables every time.

Now my problem is for displaying this on screnn the clock symbol is showing for a long time and the the

data is coming in screen. Can any on tell me how to design the screen so that it will display immediately.

Please use plain text.
Developer
developer_aman_arora
Posts: 354
Registered: ‎06-05-2013
My Device: Blackberry Z10
My Carrier: Vodafone

Re: Ui while displaying taking time

Will you provide some code to tell us what u r doing?
Please use plain text.
Developer
sowjanya1919
Posts: 109
Registered: ‎08-21-2012
My Device: Blackberry curve
My Carrier: company

Re: Ui while displaying taking time

here in below code the "s.dealsVector.size" can be 100  and i am displaying 2 deals in each row. 

 

 

  for(int k=0;k<s.dealsVector.size()/2;k++){
        HorizontalFieldManager horzVert=new HorizontalFieldManager();
            for(int j=0;j<2;j++){
                
                 SpecialOfferSubHelper s1=(SpecialOfferSubHelper) s.dealsVector.elementAt(startVal);
                 final String offerId=s1.dealID;
                 VerticalFieldManager v=new VerticalFieldManager(){
                      public int getPreferredHeight()
                           {
                              return((int)((172*screen_height)/ScreenResolution.height));
                           }
                           public int getPreferredWidth()
                           {  
                               return((int)((160*screen_width)/ScreenResolution.width));
                           }
                          protected void sublayout(int maxWidth,int maxHeight)
                          {
                              super.sublayout(getPreferredWidth(),getPreferredHeight());
                              setExtent(getPreferredWidth(),getPreferredHeight());
                          }
                          protected boolean touchEvent(TouchEvent message) {
                            
                            switch( message.getEvent() ) {
                            case TouchEvent.CLICK:
                            {
                            
                                UiApplication.getUiApplication().pushScreen(new OffersDetailScreen(offerId));
                            }
                            }
                            return super.touchEvent(message);
                             }
                 };
                  imageBgVert=new VerticalFieldManager(FOCUSABLE){
                         public int getPreferredHeight()
                       {
                          return((int)((172*screen_height)/ScreenResolution.height));
                       }
                       public int getPreferredWidth()
                       {  
                           return((int)((155*screen_width)/ScreenResolution.width));
                       }
                      protected void sublayout(int maxWidth,int maxHeight)
                      {
                          super.sublayout(getPreferredWidth(),getPreferredHeight());
                          setExtent(getPreferredWidth(),getPreferredHeight());
                      }
                   };
                   v.setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("img/offer/box.png")));
               //.............................static manager.................................................
                 imageVert=new VerticalFieldManager(){
                    public int getPreferredHeight()
                       {
                          return((int)((110*screen_height)/ScreenResolution.height));
                       }
                       public int getPreferredWidth()
                       {  
                           return((int)((155*screen_width)/ScreenResolution.width));
                       }
                      protected void sublayout(int maxWidth,int maxHeight)
                      {
                          super.sublayout(getPreferredWidth(),getPreferredHeight());
                          setExtent(getPreferredWidth(),getPreferredHeight());
                      }
                      protected boolean navigationClick(int status, int time) {

                          UiApplication.getUiApplication().pushScreen(new OffersDetailScreen(offerId));
                          return super.navigationClick(status, time);
                      }
                };
                   String url=s1.dealImage;
                   Bitmap img=Bitmap.getBitmapResource("img/offer/noImage.png");
                   Bitmap bitmapScaled;
                   bitmapScaled= new Bitmap(155,110);
                   img.scaleInto(bitmapScaled , Bitmap.FILTER_LANCZOS,Bitmap.SCALE_TO_FIT);
                   OffersImageListField b = new OffersImageListField(bitmapScaled, selectedPos, url);
                   imageVert.add(b);
                   imgcount.insertElementAt(new Integer(1), selectedPos);
                   imgcountTitle.insertElementAt(new Integer(1), selectedPos);
                   imageVert.setMargin(1,0,0,1);
                   imageBgVert.setMargin(1,0,0,2);
                   imageBgVert.add(imageVert);
                  
                   
                   
                   final int l=selectedPos;
                   dealtitle[selectedPos]=new CustomLabelField(s1.dealTitle,6052957,17,0){
                      public int getPreferredHeight()
                           {
                              return((int)((35*screen_height)/ScreenResolution.height));
                           }
                           public int getPreferredWidth()
                           {  
                               return((int)((140*screen_width)/ScreenResolution.width));
                           }
                          protected void layout(int maxWidth,int maxHeight)
                          {
                              super.layout(getPreferredWidth(),getPreferredHeight());
                              setExtent(getPreferredWidth(),getPreferredHeight());
                          }
                          protected boolean navigationClick(int status, int time) {
                              UiApplication.getUiApplication().pushScreen(new OffersDetailScreen(offerId));
                              return super.navigationClick(status, time);
                          }
                          public void paint(Graphics graphics) {
//                              for(int i=0;i<imgcountTitle.size();i++){
                                  if(((Integer)imgcountTitle.elementAt(l)).intValue()==1){
                                      invalidate();
                                  }else{
                                      
                                      Background bg = BackgroundFactory
                                    .createSolidTransparentBackground(0xF0F0F1, 50);
                            setBackground(bg);//1535207
                            graphics.setBackgroundColor(1535207);
                            graphics.clear(0, 0, 140, 34);
                                  }

                              
                            super.paint(graphics);
                        }
                  };
                  dealtitle[selectedPos].setMargin(10,0,0,10);
                  imageBgVert.add( dealtitle[selectedPos]);
                  selectedPos++;
                  StaticOffersManager staticM=new StaticOffersManager();
                  staticM.add(imageBgVert);
                   tagVert=new VerticalFieldManager(){
                      public int getPreferredHeight()
                           {
                              return((int)((74*screen_height)/ScreenResolution.height));
                           }
                           public int getPreferredWidth()
                           {  
                               return((int)((75*screen_width)/ScreenResolution.width));
                           }
                          protected void sublayout(int maxWidth,int maxHeight)
                          {
                              super.sublayout(getPreferredWidth(),getPreferredHeight());
                              setExtent(getPreferredWidth(),getPreferredHeight());
                          }
                  };
                  if(s1.newTag.length()>0){
                  tagVert.setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("img/offer/account_favorite_new.png")));
                  }
                  staticM.add(tagVert);
                  
                   percentageVert=new VerticalFieldManager(){
                      public int getPreferredHeight()
                           {
                              return((int)((35*screen_height)/ScreenResolution.height));
                           }
                           public int getPreferredWidth()
                           {  
                               return((int)((36*screen_width)/ScreenResolution.width));
                           }
                          protected void sublayout(int maxWidth,int maxHeight)
                          {
                              super.sublayout(getPreferredWidth(),getPreferredHeight());
                              setExtent(getPreferredWidth(),getPreferredHeight());
                          }
                  };
                  if(Integer.parseInt(s1.dealDiscount)>0){
                  percentageVert.setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("img/offer/offer_round.png")));
                  CustomLabelField discountV=new CustomLabelField(s1.dealDiscount+"%",Color.WHITE,15);
                  CustomLabelField discountL=new CustomLabelField("OFF",Color.WHITE,13);
                  discountV.setMargin(5,0,0,0);
                  discountL.setMargin(1,0,0,0);
                  percentageVert.add(discountV);
                  percentageVert.add(discountL);
                  }
                  staticM.add(percentageVert);
                  v.setMargin(10,0,0,53);
                  v.add(staticM);
                  startVal++;
                  horzVert.add(v);
                      }
        
            horzVert.setMargin(10,0,0,0);
             subVertical.add(horzVert);
        }

}

Please use plain text.
Developer
sowjanya1919
Posts: 109
Registered: ‎08-21-2012
My Device: Blackberry curve
My Carrier: company

Re: Ui while displaying taking time

I just made the code litle shor just see this:

 

HorizontalFieldManager horzVert=new HorizontalFieldManager();
            for(int j=0;j<2;j++){
                
                 SpecialOfferSubHelper s1=(SpecialOfferSubHelper) s.dealsVector.elementAt(startVal);
                 final String offerId=s1.dealID;
                 VerticalFieldManager v=new VerticalFieldManager(){
                      public int getPreferredHeight()
                           {
                              return((int)((172*screen_height)/ScreenResolution.height));
                           }
                           public int getPreferredWidth()
                           {  
                               return((int)((160*screen_width)/ScreenResolution.width));
                           }
                          protected void sublayout(int maxWidth,int maxHeight)
                          {
                              super.sublayout(getPreferredWidth(),getPreferredHeight());
                              setExtent(getPreferredWidth(),getPreferredHeight());
                          }
                          protected boolean touchEvent(TouchEvent message) {
                            
                            switch( message.getEvent() ) {
                            case TouchEvent.CLICK:
                            {
                            
                                UiApplication.getUiApplication().pushScreen(new OffersDetailScreen(offerId));
                            }
                            }
                            return super.touchEvent(message);
                             }
                 };
                  imageBgVert=new VerticalFieldManager(FOCUSABLE){
                         public int getPreferredHeight()
                       {
                          return((int)((172*screen_height)/ScreenResolution.height));
                       }
                       public int getPreferredWidth()
                       {  
                           return((int)((155*screen_width)/ScreenResolution.width));
                       }
                      protected void sublayout(int maxWidth,int maxHeight)
                      {
                          super.sublayout(getPreferredWidth(),getPreferredHeight());
                          setExtent(getPreferredWidth(),getPreferredHeight());
                      }
                   };
                   v.setBackground(BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("img/offer/box.png")));
               //.............................static manager.................................................
                 imageVert=new VerticalFieldManager(){
                    public int getPreferredHeight()
                       {
                          return((int)((110*screen_height)/ScreenResolution.height));
                       }
                       public int getPreferredWidth()
                       {  
                           return((int)((155*screen_width)/ScreenResolution.width));
                       }
                      protected void sublayout(int maxWidth,int maxHeight)
                      {
                          super.sublayout(getPreferredWidth(),getPreferredHeight());
                          setExtent(getPreferredWidth(),getPreferredHeight());
                      }
                      protected boolean navigationClick(int status, int time) {

                          UiApplication.getUiApplication().pushScreen(new OffersDetailScreen(offerId));
                          return super.navigationClick(status, time);
                      }
                };
                   String url=s1.dealImage;
                   Bitmap img=Bitmap.getBitmapResource("img/offer/noImage.png");
                   Bitmap bitmapScaled;
                   bitmapScaled= new Bitmap(155,110);
                   img.scaleInto(bitmapScaled , Bitmap.FILTER_LANCZOS,Bitmap.SCALE_TO_FIT);
                   OffersImageListField b = new OffersImageListField(bitmapScaled, selectedPos, url);
                   imageVert.add(b);
                   imgcount.insertElementAt(new Integer(1), selectedPos);
                   imgcountTitle.insertElementAt(new Integer(1), selectedPos);
                   imageVert.setMargin(1,0,0,1);
                   imageBgVert.setMargin(1,0,0,2);
                   imageBgVert.add(imageVert);
                  
                   
                   
                   final int l=selectedPos;
                   dealtitle[selectedPos]=new CustomLabelField(s1.dealTitle,6052957,17,0){
                      public int getPreferredHeight()
                           {
                              return((int)((35*screen_height)/ScreenResolution.height));
                           }
                           public int getPreferredWidth()
                           {  
                               return((int)((140*screen_width)/ScreenResolution.width));
                           }
                          protected void layout(int maxWidth,int maxHeight)
                          {
                              super.layout(getPreferredWidth(),getPreferredHeight());
                              setExtent(getPreferredWidth(),getPreferredHeight());
                          }
                          protected boolean navigationClick(int status, int time) {
                              UiApplication.getUiApplication().pushScreen(new OffersDetailScreen(offerId));
                              return super.navigationClick(status, time);
                          }
                          public void paint(Graphics graphics) {
//                              for(int i=0;i<imgcountTitle.size();i++){
                                  if(((Integer)imgcountTitle.elementAt(l)).intValue()==1){
                                      invalidate();
                                  }else{
                                      
                                      Background bg = BackgroundFactory
                                    .createSolidTransparentBackground(0xF0F0F1, 50);
                            setBackground(bg);//1535207
                            graphics.setBackgroundColor(1535207);
                            graphics.clear(0, 0, 140, 34);
                                  }

                              
                            super.paint(graphics);
                        }
                  };
                  dealtitle[selectedPos].setMargin(10,0,0,10);
                  imageBgVert.add( dealtitle[selectedPos]);
                  selectedPos++;
                  StaticOffersManager staticM=new StaticOffersManager();
                  staticM.add(imageBgVert);
                  
                 
                  v.setMargin(10,0,0,53);
                  v.add(staticM);
                  startVal++;
                  horzVert.add(v);
                      }
        
            horzVert.setMargin(10,0,0,0);
             subVertical.add(horzVert);
       

Please use plain text.
Developer
simon_hain
Posts: 16,092
Registered: ‎07-29-2008
My Device: Z10 LE, Z30, Passport
My Carrier: O2 Germany

Re: Ui while displaying taking time

ypi calll invalidate inside of paint. if you do that, invalidate calls paint and you have a loop.

also check if you do any networking or other blocking activity on the main thread (without a separate thread).
----------------------------------------------------------
feel free to press the like button on the right side to thank the user that helped you.
please mark posts as solved if you found a solution.
@SimonHain on twitter
Please use plain text.
Developer
sowjanya1919
Posts: 109
Registered: ‎08-21-2012
My Device: Blackberry curve
My Carrier: company

Re: Ui while displaying taking time

Actually after getting the information from backend i am parsing it and then using the above for loop to display.

So while display the clock symbol is coming on the screen and remains like that for about 20 sec. For images to display i am using lazy loading . Now tell me where to keep the invalidate()

 

Please use plain text.
Developer
simon_hain
Posts: 16,092
Registered: ‎07-29-2008
My Device: Z10 LE, Z30, Passport
My Carrier: O2 Germany

Re: Ui while displaying taking time

just get rid of it. invalidate inside paint makes no sense at all.
----------------------------------------------------------
feel free to press the like button on the right side to thank the user that helped you.
please mark posts as solved if you found a solution.
@SimonHain on twitter
Please use plain text.
Developer
peter_strange
Posts: 19,601
Registered: ‎07-14-2008
My Device: Not Specified

Re: Ui while displaying taking time

The following inside paint() will also cause an infinite paint loop:

 

Background bg = BackgroundFactory.createSolidTransparentBackground(0xF0F0F1, 50);
setBackground(bg);//1535207

 

The code in paint, should just paint, not change the Field in any way.

Please use plain text.