如何使用ListView显示图像列表?我在运行时下载图像.图像总数不固定.
我想在屏幕上显示图像.图像应来自URL,而不是可绘制的.
代码在这里:
<ImageView android:id="@+id/ImageView01" android:src = "http://l.yimg.com/a/i/us/we/52/21.gif"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
Run Code Online (Sandbox Code Playgroud)
但它在编译时出错.
如何在Android中显示来自URL的图像?
我正在使用自定义适配器处理listview.我想加载图像和文本视图.图像是从互联网网址加载的.我只是想显示可见列表项的图像以供用户使用.我提到了来自romainguy的Shelves开源项目示例,但它很难理解代码.对于初学者级别,我只想知道如何处理适配器和活动之间的标记.从commonsware 示例我可以在适配器上设置标签,但不能在listview的空闲状态下显示相应的图像.请帮我解决你的想法.示例代码更容易理解.
谢谢.
编辑:
对高效适配器示例所做的更改如下:
public class List14 extends ListActivity implements ListView.OnScrollListener {
// private TextView mStatus;
private static boolean mBusy = false;
static ViewHolder holder;
public static class EfficientAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private Bitmap mIcon1;
private Bitmap mIcon2;
public EfficientAdapter(Context context) {
// Cache the LayoutInflate to avoid asking for a new one each time.
mInflater = LayoutInflater.from(context);
// Icons bound …Run Code Online (Sandbox Code Playgroud) I'm using picasso library to load images for my app. But I don't how to implement my own disk (sdcard) caching with picasso library.
我的每个项目ListView包含一个ImageView和一个TextView,这将填充远程信息.
我有一个URL ImageView,因此我开始AsyncTask下载图像,并将setImageBitmap使用下载的位图调用.
这很顺利,但是当创建ListView时,getView()经常会调用它.它调用getView前10行的7倍(只有7行可见).(所以:0,1等,10,0,1等).
然后我可以顺利滚动到第10项.但在那之后,对于每个新行,listview再次调用getView前10个项目的7倍.(这会导致滞后..)
但是当我setImageBitmap从中删除时AsyncTask,这一切都不会发生!
可能是什么问题呢?可能是某些布局是大的,这将导致另一连串的getViews?
这里有一些代码:
<ListView
android:id="@+id/mylist"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_below="@+id/mydivider"
android:divider="@+color/mycolor"
android:dividerHeight="2dp"
android:fadingEdge="none"
android:fastScrollEnabled="true"
android:listSelector="@android:color/transparent"
android:scrollbars="horizontal"
android:scrollingCache="false"
android:smoothScrollbar="false" />
Run Code Online (Sandbox Code Playgroud)
AsyncTask:
public static class MyTask extends AsyncTask<String, Integer, Bitmap> {
private LruCache<String, Bitmap> mMap;
private String mUri;
private int mPosition;
private ViewHolder mHolder;
public MyTask (ViewHolder holder, int position, LruCache<String, Bitmap> map) {
mMap = map; …Run Code Online (Sandbox Code Playgroud) 我可以使用
val image = +imageResource(R.drawable.header)
并用于DrawImage(image)从 Drawable Resource 加载图像,
但是如何将字符串 url 加载到DrawImage(image)? 中。我试过使用 Glide,但它需要加载到 imageView 中。同时DrawImage(image)不接受来自 imageView 的输入。
谢谢。
android image-processing drawimage kotlin android-jetpack-compose
我想创建一个线程池,它将执行最近提交的任务.关于如何实现这一目标的任何建议?
谢谢
我需要找到一种方法如何清除我的应用程序存储在缓存中的数据.基本上我使用Fedor(在ListView中的图像的延迟加载)惰性列表实现,我想在我加载例如100个图像时自动清除缓存.任何想法怎么做?
编辑: 代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list=(ListView)findViewById(R.id.list);
adapter=new LazyAdapter(this, mStrings);
list.setAdapter(adapter);
deleteCache(this);
adapter.notifyDataSetChanged();
}
public static void deleteCache(Context context) {
try {
File dir = context.getCacheDir();
if (dir != null && dir.isDirectory()) {
deleteDir(dir);
}
} catch (Exception e) {}
}
public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new …Run Code Online (Sandbox Code Playgroud) 在尝试实现Drawables的小型内存缓存时,我了解到为了避免在关闭活动后出现内存泄漏,我需要取消绑定那些Drawable:将它们的回调设置为null.
因为在每个活动中维护缓存的Drawables需要额外的代码,所以我试图在之后立即取消绑定它们setImageDrawable(drawable),到目前为止我没有看到任何后果.
这是来自MyImageView类(extends ImageView)的代码:
setImageDrawable(drawable);
d.setCallback(null);
Run Code Online (Sandbox Code Playgroud)
在调试器中,我可以清楚地看到,在第一行回调为null之前,在第一行之后将其设置为此imageView,之后我再次将其设置为null.它通常在那之后显示..
setCallback (Drawable.Callback cb)各州文件:
将Drawable.Callback对象绑定到此Drawable.对于想要支持动画drawable的客户端是必需的.
因为我不需要动画drawable,所以我不明白为什么我不应该这样做但是让我感到困扰的是,在几个博客中关于Android中关于drawables的内存泄漏这只是在活动完成后才完成的.问题是,为什么绑定时总会自动设置回调ImageView?
是否存在一些边界条件,其中回调设置为null的drawable将导致问题?没有显示或NPE?