-1

実行時に600のイメージビューを作成し、実行時に線形レイアウトに追加したいのですが、ユーザーインターフェイスがブロックされます。すべてのimageviewが作成され、線形レイアウトに追加されると、私のアクティビティが表示されます。これを解決する方法。

これを手伝ってください。

       for(int index = 0; index < ProductItemArray.Image_URL.length; index++)
        {
            ImageView bottomImageView = new ImageView(context);
            bottomImageView.setTag(index);

            if(Helper.isTablet(context))
                bottomImageView.setLayoutParams(new Gallery.LayoutParams(VirtualMirrorActivity.convertDpToPixel(100, context), VirtualMirrorActivity.convertDpToPixel(100, context)));
            else
                bottomImageView.setLayoutParams(new Gallery.LayoutParams(VirtualMirrorActivity.convertDpToPixel(80, context), VirtualMirrorActivity.convertDpToPixel(80, context)));

            UrlImageViewHelper.setUrlDrawable(bottomImageView, ProductItemArray.Image_URL[index]);
            bottomImageView.setBackgroundResource(R.layout.border);
            linearLayout3.addView(bottomImageView);
            bottomImageView.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    final int position = (Integer) v.getTag();
                    linearLayout.removeAllViews();
                    Thread newThread = new Thread(new Runnable() {
                        public void run() {
                            isAlreadyExistInWishlist = true;
                            URL url_1 = null;
                            try {
                                VMProductListPaging.productUrl = ProductItemArray.Image_small_URL[position];
                                VMProductListPaging.productId = ProductItemArray.productId[position];
                                VMProductListPaging.productName = ProductItemArray.product_Name[position];

                                url_1 = new URL(ProductItemArray.Image_small_URL[position]);
                                bmp = BitmapFactory.decodeStream(url_1.openConnection().getInputStream());
                                isExecuted = true;
                                bitmapModelsHandler.sendMessage(bitmapModelsHandler.obtainMessage());
                            }
                            catch (Exception e) {
                                //Toast.makeText(context,"Sorry!! This link appears to be broken",Toast.LENGTH_LONG).show();
                            }
                        }
                    });
                    newThread.start();
                }
            });
        }
4

1 に答える 1

4

同時に600枚の画像をメモリに保存することは、おそらく良い考えではありません。

ビューのリサイクル/リリースを管理するアダプター(ListView、Gallery、GridView、Spinnerなど)を介した遅延読み込みの使用を検討する必要があります。

于 2012-11-20T08:18:53.470 に答える