在列表视图中加载Android图片

用户名

在我的Android应用程序中,一个Asyntask用于以列表视图的形式从Web加载图像。我想显示图像的中心部分,我曾尝试使用imageloader加载图像,但问题是图像清晰度很差,但我使用了它用于加载缩略图,因为缩略图很小。因此,我尝试了下面给出的Asyntask。此方法的问题是图像视图显示了其他图像,这意味着第一个列表项中的图像视图将显示下一个列表项的图像,并在显示某些图像后时间将显示正确的图像。如何解决此问题。或建议一种使图像清晰的方法。请帮助我。在此先感谢您

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;
    ProgressBar mProgressBar;
    String url;

    public DownloadImageTask(ImageView bmImage, ProgressBar progressBar) {
        this.bmImage = bmImage;
        this.mProgressBar = progressBar;
    }

    @Override
    protected void onPreExecute() {
        mProgressBar.setVisibility(View.VISIBLE);
        super.onPreExecute();
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        url = urldisplay;
        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            // Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap result) {
        Utilities.addBitmapToMemoryCache(url, result);
        bmImage.setImageBitmap(result);
        mProgressBar.setVisibility(View.GONE);
        // result.recycle();
    }
}

}

public View getView(final int position, View convertView, ViewGroup parent) {
    vi = convertView;
    int type = getItemViewType(position);
    // Utilities.message_player = new MediaPlayer();
    if (vi == null) {
        inflater = LayoutInflater.from(mcontext);
        if (type == ITEM_TYPE_ONE)
            vi = inflater.inflate(R.layout.message_group_list_item, null);
        else
            vi = inflater.inflate(R.layout.listlastrow, null);
    }
    if (type == ITEM_TYPE_ONE) {
        if (fontType == true) {

        }
        ((ImageView) vi.findViewById(R.id.imageMessage)).setTag(position+"i");

Bitmap bmp = Utilities.getBitmapFromMemCache(feedsImage);
                    if(bmp == null){
                    DownloadImageTask dwnloadImgTask = new DownloadImageTask(((ImageView) vi.findViewWithTag(position+"i")),
                            ((ProgressBar) vi.findViewById(R.id.progressBar1)));
                    dwnloadImgTask.execute(feedsImage);
                    }else{
                        ((ImageView) vi.findViewById(R.id.imageMessage)).setImageBitmap(bmp);
                    }

}
}
桂安

当您从缓存中设置位图或下载新图像时,您丢失了一些东西:

您的父视图(vi)可能是先前创建的视图,可以循环使用,以避免重新创建每个视图(convertView的作用)。

这个convertView上已经有图像,因为它是已加载图像的回收物品。

因此,如果您有一个convertView,则必须重置图像视图的内容:

    ((ImageView) vi.findViewById(R.id.imageMessage)).setTag(position+"i");

    Bitmap bmp = Utilities.getBitmapFromMemCache(feedsImage);
    if(bmp == null){
        //HERE I add a line to reset the bitmap of the imageview
        ((ImageView) vi.findViewById(R.id.imageMessage)).setImageBitmap(null);

        DownloadImageTask dwnloadImgTask = new DownloadImageTask(((ImageView)    vi.findViewWithTag(position+"i")), ((ProgressBar) vi.findViewById(R.id.progressBar1)));
        dwnloadImgTask.execute(feedsImage);
    }else{
        ((ImageView) vi.findViewById(R.id.imageMessage)).setImageBitmap(bmp);
    }

我已设置null为删除位图,但您可能想设置一个占位符位图(例如上面带有重新加载图标的灰色图片或类似的东西...)

希望能有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在列表视图中加载大型数据库

来自分类Dev

在列表视图中加载更多选项未在android中显示上一个列表

来自分类Dev

无法在Android的Web视图中加载Flash

来自分类Dev

android:无法在选项卡视图中加载weview

来自分类Dev

在Android Studio中加载图片

来自分类Dev

Android-如何在simpleApapter列表视图中显示图片

来自分类Dev

在Codeigniter视图中加载数据

来自分类Dev

无法在集合视图中加载数据?

来自分类Dev

图像未在刀片视图中加载

来自分类Dev

地图无法在视图中加载

来自分类Dev

指令未在角度视图中加载

来自分类Dev

在 Ruby on Rails 视图中加载 JavaScript

来自分类Dev

在 MVC 的部分视图中加载 JQuery

来自分类Dev

在惰性适配器和列表视图中加载更多项目

来自分类Dev

如何在sencha touch的列表视图中加载本地存储数据?

来自分类Dev

如何在yii的更新视图中的多下拉列表中加载所选值?

来自分类Dev

如何根据文本名称在列表视图中加载图像

来自分类Dev

Android Studio将图像URL加载到列表视图中

来自分类Dev

Android Studio将图像URL加载到列表视图中

来自分类Dev

图片在列表视图中变得混乱

来自分类Dev

更新列表视图中的图片onclick

来自分类Dev

无法在Android中加载Facebook图片

来自分类Dev

单击时在主视图中加载部分视图

来自分类Dev

滚动视图中加载的视图大小不正确

来自分类Dev

在加载数据之前先在视图中加载数据

来自分类Dev

在列表视图中加载每个项目的所有数据还是只加载需要的信息?

来自分类Dev

在Android中加载列表视图时访问列表的第一项

来自分类Dev

如何将图片从网址加载到小部件的android远程视图中

来自分类Dev

如何将图片从网址加载到小部件的android远程视图中

Related 相关文章

  1. 1

    在列表视图中加载大型数据库

  2. 2

    在列表视图中加载更多选项未在android中显示上一个列表

  3. 3

    无法在Android的Web视图中加载Flash

  4. 4

    android:无法在选项卡视图中加载weview

  5. 5

    在Android Studio中加载图片

  6. 6

    Android-如何在simpleApapter列表视图中显示图片

  7. 7

    在Codeigniter视图中加载数据

  8. 8

    无法在集合视图中加载数据?

  9. 9

    图像未在刀片视图中加载

  10. 10

    地图无法在视图中加载

  11. 11

    指令未在角度视图中加载

  12. 12

    在 Ruby on Rails 视图中加载 JavaScript

  13. 13

    在 MVC 的部分视图中加载 JQuery

  14. 14

    在惰性适配器和列表视图中加载更多项目

  15. 15

    如何在sencha touch的列表视图中加载本地存储数据?

  16. 16

    如何在yii的更新视图中的多下拉列表中加载所选值?

  17. 17

    如何根据文本名称在列表视图中加载图像

  18. 18

    Android Studio将图像URL加载到列表视图中

  19. 19

    Android Studio将图像URL加载到列表视图中

  20. 20

    图片在列表视图中变得混乱

  21. 21

    更新列表视图中的图片onclick

  22. 22

    无法在Android中加载Facebook图片

  23. 23

    单击时在主视图中加载部分视图

  24. 24

    滚动视图中加载的视图大小不正确

  25. 25

    在加载数据之前先在视图中加载数据

  26. 26

    在列表视图中加载每个项目的所有数据还是只加载需要的信息?

  27. 27

    在Android中加载列表视图时访问列表的第一项

  28. 28

    如何将图片从网址加载到小部件的android远程视图中

  29. 29

    如何将图片从网址加载到小部件的android远程视图中

热门标签

归档