0

我有问题。我得到了一些代码,我不会全部放在这里,因为它太大了。但我有一个列表视图。我这样做:

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。现在我想要我的列表视图中的图像。所以在每个项目中都有另一个图像。

我可以使用 imageview 或 webview 来完成。

所以让我们看看 url 存储在这个:

KEY_URL;

imageview 或 webview 是这样的:

R.id.image;

我怎样才能做到这一点?

提前致谢!!

4

2 回答 2

0

首先,

WebView 比 ImageView 占用更多内存。所以我推荐你使用ImageView。

第二,

查看以下网址。

ListView 中图像的延迟加载

在本文中,我使用的第一个库是小型且可自定义的库。它使用线程池并且似乎控制传输。第二个库,我没用过,比较大。但是这个库中的更多方法似乎可以轻松控制各种配置。

最后,

我认为您应该创建自己的适配器,扩展 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;
    }
}
于 2013-01-22T11:20:43.850 回答
0

您可以使用 [androidQuery] https://code.google.com/p/android-query/ 它有一个线程池。它以不同的方式加载图像。可以选择降低样本图像以节省内存。由谷歌制作:)

于 2014-06-12T09:09:35.843 回答