我遇到了问题。我得到了一些我不打算放在这里的代码,因为它很大。但是我得到了一个列表视图。我这样做:
lv = (ListView) findViewById(R.id.list);
(Here is normally some asynctask code and stuff)
// list adapter
ListAdapter adapter = new SimpleAdapter(MainActivity.this, placesListItems,
R.layout.list_item, new String[] { KEY_REFERENCE, KEY_NAME, KEY_VICINITY, KEY_DISTANCE,
KEY_LOCATION}, new int[] { R.id.reference, R.id.name, R.id.vicinity, R.id.radius, R.id.location});
// Adding data into listview
lv.setAdapter(adapter);
现在问题是我有一个网址,网站上唯一的东西是图片。它来自Google Place Photos。现在我想在listview中找到一张图片。因此,在每个项目中都有另一个图像。
我可以使用imageview或webview来完成。
所以让我们把这个网址存储在这个:
KEY_URL;
imageview或webview是这样的:
R.id.image;
我该怎么做?
提前致谢!!
答案 0 :(得分:0)
WebView比ImageView占用更多内存。 所以我建议你使用ImageView。
查看以下网址。
Lazy load of images in ListView
在这篇文章中, 我使用的第一个库是一个小型的可定制库。 它使用线程池,似乎控制传输。 我没有使用的第二个图书馆更大。 但是这个库中的更多方法似乎可以很容易地控制各种配置。
我认为你应该创建自己的Adapter,扩展SimpleAdapter(或CursorAdapter,或......)。 喜欢跟随伪代码。
public class MySimpleAdapter extends SimpleAdapter {
private ImageLoader mImageLoader;
private int mResource;
private LayoutInflater inflater;
public static class ViewHolder {
public ImageView img;
public TextView txt;
}
public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
mResource = resource;
mImageLoader = new ImageLoader(context);
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.cell_text, null);
holder = new ViewHolder();
holder.txt = (TextView) convertView.findViewById(R.id.txt);
holder.img = (ImageView) convertView.findViewById(R.id.img);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.txt.setText("something text");
mImageLoader.displayImage("url", holder.img);
return convertView;
}
}
答案 1 :(得分:0)
你可以使用[androidQuery] https://code.google.com/p/android-query/ 它有一个线程池。它以不同的方式加载图像。可以选择下采样图像以节省内存。由谷歌制作:)