Android Widget 中ListView加载网络图片
博客专区 > yaly 的博客 > 博客详情
Android Widget 中ListView加载网络图片
yaly 发表于2年前
Android Widget 中ListView加载网络图片
  • 发表于 2年前
  • 阅读 89
  • 收藏 3
  • 点赞 2
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

关于Widget的介绍和用法可以看这两篇博文,写的非常详细了

Android 之窗口小部件详解--App Widget http://www.cnblogs.com/skywang12345/p/3158310.html 

Android 之窗口小部件高级篇--App Widget 之 RemoteViews http://www.cnblogs.com/skywang12345/p/3264991.html

上面两篇博文没有提到怎么给Widget中的ListView或者GridView中显示网络图片,而我们的项目的需求中需要Widget中的ListView填充接口获得的文字和图片,试过很多方法最后发现还是以下这种伪同步比较让人满意。

        
            private Map<Integer, Boolean> flags = Collections.synchronizedMap(new HashMap<Integer, Boolean>());
            private Bitmap mBitmap;
            private Handler handler = new Handler(Looper.getMainLooper());


            @Override
            public RemoteViews getViewAt(final int position) { 
                //这里初始化RemoteView,设置监听,等等....

                flags.put(position, false);
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        //这里用了ImageLoader,或者别的带有加载回调加载库
                        ImageLoader.getInstance().loadImage(datas.get(position).getImgUrl, new SimpleImageLoadingListener() {
                            @Override
                            public void onLoadingStarted(String imageUri, View view) {
                            }
    
                            @Override
                            public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                                flags.put(position, true);
                            }
    
                            @Override
                            public void onLoadingCancelled(String imageUri, View view) {
                                flags.put(position, true);
                            }
    
                            @Override
                            public void onLoadingComplete(String arg0, View arg1, Bitmap bitmap) {
                                mBitmap = bitmap;
                                flags.put(position, true);
                            }
                        });
                    }
                });
                //在此一直等待获取到网络图片
                while (!flags.get(position)) {
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                flags.put(position, false);
                if (mBitmap != null) {
                    mRemoteViews.setImageViewBitmap(R.id.widget_item_image, mBitmap);
                } else {
                    mRemoteViews.setImageViewResource(R.id.widget_item_image, R.mipmap.ic_launcher);
                }
                mBitmap = null;
    
                return mRemoteViews;
            }

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 3
博文 92
码字总数 48212
×
yaly
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: