android Listview图片正在加载

时间:2011-02-15 06:08:51

标签: android listview

嗨我有一个自定义列表视图,其中包含图像和textview,我正在使用适配器listview的getview中的处理程序来加载图像,当所有图像都加载时,然后我再次更改手机的方向图像下载,我想阻止这一个,即当所有图像都加载,当方向改变时,它不会有效。

public View getView(final int position, View convertView, ViewGroup parent) {
        final String imageurl = imageUrls.get(position);
        LayoutInflater inflate = LayoutInflater.from(context);
        View v = inflate.inflate(rowResId, parent, false);
        final ImageView image = (ImageView) v.findViewById(R.id.image);
        final ProgressBar progress = (ProgressBar) v
                .findViewById(R.id.progress);

        image.setVisibility(View.GONE);
        progress.setVisibility(View.VISIBLE);
        final Handler handler = new Handler() {
            @Override
            public void handleMessage(Message message) {
                System.out.println("Set image at" + position
                        + " Image Name :: " + imageurl);
                progress.setVisibility(View.GONE);
                image.setImageBitmap((Bitmap) message.obj);
                image.setVisibility(View.VISIBLE);
            }
        };

        Thread thread = new Thread() {
            @Override
            public void run() {
                Bitmap drawable = LoadImageFromWebOperations(imageurl);
                Message message = handler.obtainMessage(1, drawable);
                handler.sendMessage(message);

            }
        };
        thread.start();
        return v;
    }

3 个答案:

答案 0 :(得分:2)

您可以使用位图图像列表。首先将列表中的所有Bitmap设置为null。并且在方法getView中检查位图列表位置中的位图是否为空。如果为null,则显示progressBar并下载图像并将图像保存在列表中。

例如,图像列表名称是图像。然后getView方法中的代码如下:

public View getView(final int position, View convertView, ViewGroup parent) {
    final String imageurl = imageUrls.get(position);
    LayoutInflater inflate = LayoutInflater.from(context);
    View v = inflate.inflate(rowResId, parent, false);
    final ImageView image = (ImageView) v.findViewById(R.id.image);
    final ProgressBar progress = (ProgressBar) v
            .findViewById(R.id.progress);
    if(images.get(position) != null) {
         progress.setVisibility(View.GONE);
         image.setImageBitmap(images.get(position));
         image.setVisibility(View.VISIBLE);
    } else {
         image.setVisibility(View.GONE);
         progress.setVisibility(View.VISIBLE);
         final Handler handler = new Handler() {
             @Override
             public void handleMessage(Message message) {
                  System.out.println("Set image at" + position
                    + " Image Name :: " + imageurl);
                  progress.setVisibility(View.GONE);
                  image.setImageBitmap((Bitmap) message.obj);
                  image.setVisibility(View.VISIBLE);
             }
         };

         Thread thread = new Thread() {
         @Override
            public void run() {
               Bitmap drawable = LoadImageFromWebOperations(imageurl);
               images.add(position, drawable);
               Message message = handler.obtainMessage(1, drawable);
               handler.sendMessage(message);
            }
         };
         thread.start();
    }

    return v;
}
希望你明白我的意思。 :)

答案 1 :(得分:1)

只需对您的Activity

使用以下方法即可
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}

答案 2 :(得分:0)

在活动的活动代码中的android清单文件中添加此属性。那时不需要任何代码。

机器人:configChanges = “取向| keyboardHidden”

这是对您的问题的回答,但对您的问题更有利的是@gypsicoder建议的

希望这有帮助:)

不要忘记接受对你有帮助的答案。这样其他人也可以得到正确的参考。