当前位置: 首页 > 知识库问答 >
问题:

listview和Asynctask的映像问题

穆锋
2023-03-14

我正在使用一个listview,每个项目都使用一个从带有asynctask类的服务器调用的映像。

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
        View view = convertView;
        final ViewHolder viewHolder;

        if (view == null) {
            view = getActivity().getLayoutInflater().inflate(R.layout.item_liste, null);
            viewHolder = new ViewHolder();
            viewHolder.image = (ImageView) view.findViewById(R.id.imageView);
            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }

        if (/* Image not loaded */) {

            /* Create and execute the request using an AsyncTask */
            mRequestManager.getDrawable("0", listItemInformation.resumeBien.Identifiant, new SendBitmap() {

                /* SendBack is called when the bitmap is received from the server */

                @Override
                public void sendBack(Bitmap bitmap) {
                    listItemInformation.drawable.add(bitmap);
                    listItemInformation.drawableCalled = false;
                    viewHolder.image.setImageBitmap(bitmap);
                } 
           });
        } else {
            viewHolder.image.setImageBitmap(listItemInformation.drawable.get(0));
        }

        return view;
    }

问题是,当图像被接收时,ImageView不是好的图像。并且所有图片都加载在ListView的第一项中。

但在滚动过程中调用listview运动时会被剪切。

我有什么可能避免这些问题?我希望得到与GooglePlay的ListView相同的结果。

提前致谢:)

共有1个答案

艾宁
2023-03-14

您可以尝试Volley的NetworkImageView只需一两行就可以完成您的工作。

     //Dummy:

    public static class BitmapLruCache extends LruCache<String, Bitmap> implements ImageCache {

    public BitmapLruCache(int maxSize) {
        super(maxSize);
    }


    @Override
    protected int sizeOf(String key, Bitmap value) {
        return value.getRowBytes() * value.getHeight();
    }


    @Override
    public Bitmap getBitmap(String url) {
        return get(url);
    }


    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        put(url, bitmap);
    }
  }

    ImageLoader sImageLoader = new ImageLoader(sRequestQueue, new BitmapLruCache(100));

    networkImageView.setImageUrl(url_to_image, sImageLoader);
 类似资料:
  • 我正在尝试加强我对asyncTask的了解,所以我按照教程下载了一个图像,但我不明白,我得到了一个错误的ArrayOutofBound索引,所以如果有人告诉我原因这里是代码,请告诉我为什么他迭代进度条最大 下面是堆栈跟踪01-20 03:37:40.607 407 5-4096/com.gamecodeschool.bodybuilder E/AndroidRuntime:致命异常:AsyncTa

  • 我在下载图像和更新ImageView时遇到问题,我正在使用ExecutorServices下载图像,但我面临的问题是,作为场景,我正在使用基本适配器在列表中显示Imageview。图像被下载,但这两个图像都只在firstImage View中更新。 所以位图在同一个imageView中得到了更新,有人遇到过类似的问题吗 例如,我正在下载2个图像,它正在创建2个ImageDownloader实例,所

  • 我有一个问题,加载图像到我的应用程序。我正在尝试做一个简单的图像浏览器。在左边我有一个文件夹列表。单击列表上的文件夹名称后,图像应该出现在右侧(流窗格)。每个图像都在带有边框的HBox中。但我很快就会犯这样的错误: 我看任务管理器-如果我只加载6张照片,应用程序占用500MB的内存!还有一件事--如果我更改列表上的文件夹,内存就会被占用。在选择另一个文件夹时,我正在创建新的flowPane 所以包

  • DockerFile: 在之后,GPG行显示为红色,图像创建失败。为什么?

  • 问题内容: 是否有将图像添加到JavaFX ListView的方法? 这是我当前设置列表视图项的方式。 我还使用列表视图值作为ID来知道选择了哪个。 问题答案: 实现显示图片的,并在上设置。该标准的Oracle教程有一个自定义列表单元实现的一个例子。 您将按照以下方式进行操作: 该方法可以经常调用,因此最好预加载图像并将其提供给单元使用,而不是每次调用都创建它们。

  • 问题内容: 这是一个非常常见的场景:在ListView中显示必须从Internet下载的图像。 现在,我有一个用于ArrayView的自定义子类ArrayAdapter。在ArrayAdapter的getView()实现中,我产生了一个单独的线程来加载图像。加载完成后,它将查找适当的ImageView并使用ImageView.setImageDrawable()设置图像。因此,我使用的解决方案与此