UI块在运行时创建imageview

时间:2012-11-20 08:12:13

标签: android android-launcher

我想在运行时创建600个imageview,并在运行时将其添加到线性布局。这会阻塞我的用户界面。当所有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();
                }
            });
        }

1 个答案:

答案 0 :(得分:4)

同时在内存中有600张图片可能不是一个好主意。

您应该考虑通过适配器使用一些延迟加载(使用ListView,Gallery,GridView,Spinner等...)来管理视图的回收/发布。