将SD卡图像读入ListView

时间:2014-06-09 14:23:11

标签: android listview hashmap

我设法在我的列表视图中使用可绘制图像,但是如何对SD卡中的图像执行相同操作?

ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();

HashMap<String, String> map = new HashMap<String, String>();
map.put("KEY_IMAGE", Integer.toString(R.drawable.a)); //change to SD card
map.put("KEY_LINK", "link");
map.put("KEY_NAME", "name");
menuItems.add(map);

String[] from = { "KEY_IMAGE", "KEY_NAME", "KEY_LINK" };
int[] to =  {R.id.imageView_cell, R.id.list_headline,R.id.list_info };

SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), menuItems, R.layout.list_view,from, to);

listview.setAdapter(adapter);

2 个答案:

答案 0 :(得分:1)

您可以在不实现自定义适配器的情况下执行此操作。

您应该实现SimpleAdapter.ViewBinder接口,并调用setViewBinder()告诉您的适配器如何绑定数据。

正如LordRaydenMK所提到的,最好是在Picasso的实现中异步加载图像(例如使用setViewValue())。

答案 1 :(得分:0)

您必须创建自定义适配器并覆盖getView方法。您可以使用视图回收和查看持有者的最佳做法找到示例here

加载图像,特别是在适配器中的图像应该在后台线程中完成,这样就不会减慢UI的速度。

对于后台加载,您可以使用Picasso.

等库
Picasso.with(context).load(new File(...)).into(imageView2);