在 AsyncTack 中加载位图时出现问题

亚历山大·瓦西尔丘克

我成功解析了 xml,并从标签和属性中获取了文本和 url。文本 我已成功设置到我的 ListView 中,但我无法将位图加载到 ImageView 中。我想我忘记了一些小事,比如某处的一些转换,或者我写错了 AsyncTask。

这是我的解析和 AsyncTask 调用:

    private List<SomeItem> items = new ArrayList();

listView = findViewById(R.id.listView);
        IV = findViewById(R.id.iconsrc);

        ArrayList<String> list = new ArrayList<>();
        try {
            XmlPullParser parser = getResources().getXml(R.xml.myxml);

            while (parser.next() != XmlPullParser.END_DOCUMENT) {
                tagname = parser.getName();
                switch (parser.getEventType()){

                    case XmlPullParser.START_TAG:
                        if (tagname != null && tagname.equals(iconsrc)){
                            iconsrcVALUE = parser.getAttributeValue(0);
                            myBitmap = new AsyncForBitmap().execute(iconsrcVALUE).get();
                            IV.setImageBitmap(myBitmap);
                        }

                        break;

                    case XmlPullParser.TEXT :
                        tagtext = parser.getText();
                         break;

                    case XmlPullParser.END_TAG:

                        if (tagname != null && tagname.equals(displayname)) {

                            programmes.add(new SomeItem(tagtext, myBitmap));
                        }

                        break;
                }
            }

        } catch (Throwable t) {
            Toast.makeText(this,
                    "Error while loading xml document: " + t.toString(), Toast.LENGTH_LONG)
                    .show();
        }

        SomeAdapter adapter = new SomeAdapter(this, R.layout.list_item, items);
        listView.setAdapter(adapter);

我的异步任务:

class AsyncForBitmap extends AsyncTask<String, Void, Bitmap> {
        private Exception exception;

        protected Bitmap doInBackground(String... urls) {
            try {
                URL url=new URL(urls[0]);
                Bitmap bitmap = BitmapFactory.decodeStream((InputStream)url.getContent());
                return bitmap;

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
}

也许我必须添加(覆盖)onPostExecute() 方法?但是我需要在那里做什么?

我试过了:

protected void onPostExecute(Bitmap bitmap) {
            IV.setImageBitmap(bitmap);
        }

但这是错误的。

金丹索尼

您可以执行类似将 ImageView 传递到构造函数中的 AsyncTask 之类的操作。为此,首先修改您的 AsyncTask 如下:

class AsyncForBitmap extends AsyncTask<String, Void, Bitmap> {

    private final ImageView mImageView;

    public AsyncForBitmap(ImageView imageView){
        mImageView = imageView;
    }

    private Exception exception;

    protected Bitmap doInBackground(String... urls) {
        try {
            URL url=new URL(urls[0]);
            Bitmap bitmap = BitmapFactory.decodeStream((InputStream)url.getContent());
            return bitmap;

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    protected void onPostExecute(Bitmap bitmap){
        mImageView.setImageBitmap(bitmap);
    }

}

然后,只需执行以下操作:

 ...
 case XmlPullParser.START_TAG:
     if (tagname != null && tagname.equals(iconsrc)){
        iconsrcVALUE = parser.getAttributeValue(0);
        new AsyncForBitmap(IV).execute(iconsrcVALUE);
     }
     break;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

在Julia中加载CSV文件时出现问题

来自分类Dev

在Julia中加载CSV文件时出现问题

来自分类Dev

在Android中加载Google Map时出现问题

来自分类Dev

在Chrome扩展程序中加载Polymer 1.0时出现问题

来自分类Dev

通过Gmsh3D在fipy中加载(.msh)文件时出现问题

来自分类Dev

在DJANGO中加载admin CSS和我的页面时出现问题

来自分类Dev

在Mac上的Xamarin Studio中加载iOS解决方案时出现问题

来自分类Dev

使用估计器在 Java 中加载/提供 tensorflow 模型时出现问题

来自分类Dev

从AndroidKeystore加载私钥时出现问题

来自分类Dev

加载jquery接口时出现问题,

来自分类Dev

加载链接列表时出现问题

来自分类Dev

回收从“ BitmapDrawable”获取的位图时出现问题

来自分类Dev

为什么在Python3中加载模块时出现问题,而在Python2中加载时却没有问题?

来自分类Dev

在 Hana 中加载时间戳和时间值属性时出现问题(属性加载失败错误)

来自分类Dev

加载位图时出现OutOfMemoryError

来自分类Dev

“筛选”急切加载的数据时出现问题

来自分类Dev

在RecyclerView内加载AdView时出现问题

来自分类Dev

加载Microsoft Visual菜单时出现问题

来自分类Dev

MediaElement.js在加载时出现问题

来自分类Dev

NavigationLink SwiftUI导致加载图像时出现问题

来自分类Dev

WebGL-加载纹理时出现问题

来自分类Dev

从文件jQuery数组加载数组时出现问题

来自分类Dev

Prism和IEventAggregator:加载模块时出现问题

来自分类Dev

使用按钮动画加载场景异步时出现问题

来自分类Dev

django 1.7:加载测试的初始夹具时出现问题

来自分类Dev

Rails&Youtube API:加载iframe时出现问题

来自分类Dev

加载文件时emacs出现问题

来自分类Dev

在Ubuntu中加载和intel pro / 1000 NIC出现问题

来自分类Dev

在Ubuntu中加载和intel pro / 1000 NIC出现问题

Related 相关文章

  1. 1

    在Julia中加载CSV文件时出现问题

  2. 2

    在Julia中加载CSV文件时出现问题

  3. 3

    在Android中加载Google Map时出现问题

  4. 4

    在Chrome扩展程序中加载Polymer 1.0时出现问题

  5. 5

    通过Gmsh3D在fipy中加载(.msh)文件时出现问题

  6. 6

    在DJANGO中加载admin CSS和我的页面时出现问题

  7. 7

    在Mac上的Xamarin Studio中加载iOS解决方案时出现问题

  8. 8

    使用估计器在 Java 中加载/提供 tensorflow 模型时出现问题

  9. 9

    从AndroidKeystore加载私钥时出现问题

  10. 10

    加载jquery接口时出现问题,

  11. 11

    加载链接列表时出现问题

  12. 12

    回收从“ BitmapDrawable”获取的位图时出现问题

  13. 13

    为什么在Python3中加载模块时出现问题,而在Python2中加载时却没有问题?

  14. 14

    在 Hana 中加载时间戳和时间值属性时出现问题(属性加载失败错误)

  15. 15

    加载位图时出现OutOfMemoryError

  16. 16

    “筛选”急切加载的数据时出现问题

  17. 17

    在RecyclerView内加载AdView时出现问题

  18. 18

    加载Microsoft Visual菜单时出现问题

  19. 19

    MediaElement.js在加载时出现问题

  20. 20

    NavigationLink SwiftUI导致加载图像时出现问题

  21. 21

    WebGL-加载纹理时出现问题

  22. 22

    从文件jQuery数组加载数组时出现问题

  23. 23

    Prism和IEventAggregator:加载模块时出现问题

  24. 24

    使用按钮动画加载场景异步时出现问题

  25. 25

    django 1.7:加载测试的初始夹具时出现问题

  26. 26

    Rails&Youtube API:加载iframe时出现问题

  27. 27

    加载文件时emacs出现问题

  28. 28

    在Ubuntu中加载和intel pro / 1000 NIC出现问题

  29. 29

    在Ubuntu中加载和intel pro / 1000 NIC出现问题

热门标签

归档