1

サーバーから画像をPictureScrollFieldロードしていますが、画像がサーバーからロードされるまでPictureScrollField空白の画像が表示され、画像が画像配列にロードされるとPictureScrollFieldListField.

BlackBerry のドキュメントから、すべてのフィールドを無効化できる (つまり、再描画できる) ことを読みましたがPictureScrollField.invalidate()、プログラムでメソッドを使用するとエラーが発生します。

タイプフィールドからのメソッド無効化は表示されません

私が使用するプログラムは以下のとおりです

public final class GetMoreImage extends MainScreen {
    public static PictureScrollField psf;
    int size;
    int length;
    String text=null;
    EncodedImage[] encodedImage;
    VerticalFieldManager vmanger;
    private LoadImages loadImages;

    public GetMoreImage(int index) {
        super(NO_VERTICAL_SCROLL | NO_VERTICAL_SCROLLBAR);
        this.size=index;
        try {
            length=ListHome.object[size].getJSONArray("UrlArray").length();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        ScrollEntry[] entries = new ScrollEntry[length];
        for (int i = 0; i < length; i++) {
            if(encodedImage != null && encodedImage.length > i && encodedImage[i] != null) {
                EncodedImage encodedImg =ListHome.sizeImage(JPEGEncodedImage.encode(Bitmap.getBitmapResource("icon.png"),80),640,380);
                Bitmap bmp=encodedImg.getBitmap();
                entries[i] = new ScrollEntry(bmp, "hello", "");
            }
            else {
                try {
                    text=ListHome.object[size].getJSONArray("UrlArray").getString(i).toString();
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                EncodedImage encodedImg =ListHome.sizeImage(JPEGEncodedImage.encode(connectServerForImage(text),80),640,380);
                Bitmap bmp=encodedImg.getBitmap();
                entries[i] = new ScrollEntry(bmp, "hello", "");
            }
        }

        psf = new PictureScrollField();
        psf.setData(entries, 0);
        psf.setHighlightStyle(HighlightStyle.ILLUMINATE_WITH_SHRINK_LENS);
        add(psf);
        loadImages = new LoadImages(80, 80);
        loadImages.start();
    }

    private class LoadImages extends Thread {
        int widthL;
        int heightL;

        LoadImages(int width, int height) {
            this.widthL = width;
            this.heightL = height;
        }

        public void run() {
            encodedImage=new EncodedImage[length];
            if (ListHome.object[size] != null) {
                for (int i = 0; i < length; i++) {
                    try {
                        String text=ListHome.object[size].getJSONArray("UrlArray").getString(i).toString();
                        EncodedImage encodedImg = JPEGEncodedImage.encode(connectServerForImage(text), 80);//Get Image from Server
                        encodedImage[i] = ListHome.sizeImage(encodedImg, Display.getWidth(), Display.getHeight()-100);
                        psf.invalidate();//This Line generate error
                    } catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                }
            } else {
                UiApplication.getUiApplication().invokeLater(new Runnable() {
                    public void run() {
                        Dialog.alert("No Data Found");
                    }
                });
            }
        }
    }
}

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1