gpt4 book ai didi

android - Android 小部件 RemoteViewsFactory 内的通用图像加载器

转载 作者:搜寻专家 更新时间:2023-11-01 08:55:00 26 4
gpt4 key购买 nike

我想发布一个问题的解决方案。希望它能帮助其他面临同样问题的人。

这与可用的 Android 通用图像加载器库有关 here

原始问题是:

我今天开始使用你们的 Android Universal Image Loader (AUIL),它非常非常好!感谢您分享这个!

我知道可以在 Provider 类内的 android 小部件项目中使用 AUIL,但我正在尝试在 ListView(本身位于小部件内)内加载多个图像。

最佳答案

我设法找到的解决方案是

public class YourViewsFactory implements RemoteViewsService.RemoteViewsFactory
{
Map<Integer, Boolean> flags = Collections.synchronizedMap(new HashMap<Integer, Boolean>());
Bitmap mBitmap;
Handler handler = new Handler(Looper.getMainLooper());


@Override
public RemoteViews getViewAt(final int position)
{
final RemoteViews row = new RemoteViews(ctxt.getPackageName(), R.layout.row);
flags.put(position, false);
handler.post(new Runnable()
{
@Override
public void run()
{
m_imgLoader.loadImage(YOUR_IMAGE_URL, 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(100);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
flags.put(position, false);
if (mBitmap != null)
{
row.setImageViewBitmap(R.id.ivPoster, mBitmap);
} else
{
row.setImageViewResource(R.id.ivPoster, R.drawable.cw);
}
mBitmap = null;
} // End of getViewAt override


} // End of class

这不是我的解决方案,而是可用的 Vova Klyshevich 之一 here !

关于android - Android 小部件 RemoteViewsFactory 内的通用图像加载器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com