如何将下载的图像添加到ListView?

时间:2013-03-14 01:19:14

标签: android listview android-asynctask android-image

我正在尝试将下载的图片添加到ListView。我首先从服务器获取图像文件的名称,然后构建位图并将其存储在AsyncTask数组中Bitmap[]。然后,我使用HashMap使用下面显示的SimpleAdapter添加数据。我想知道如何将位图图像添加到列表视图。

现在我在我尝试将项目照片放入哈希映射的行中收到错误。我该如何解决?我是否必须将它们移动到drawable资源目录?我对此非常陌生,并且非常感谢将下载的图像放入列表视图中的任何帮助。以下是我准备数据的方法。所有这些都发生在我的异步任务的onPostExecute()方法中,其中OI执行另一个异步任务来获取图像文件。

new AccessImages().execute("http://10.0.2.2:8000/herbivorenew/" + viewdata[2]);

List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();

for (int i=0;i< count; i++) {
    HashMap<String, String> hm = new HashMap<String,String>();
    hm.put("item_header", viewtext[i]);
    // built from an asynctask from the server
    hm.put("item_photo", (Bitmap)(itemphoto[i]) );
    hm.put("carrots", Integer.toString(carrotimage[i]) );

    aList.add(hm);
}

// Keys used in Hashmap
String[] from = {"item_header", "item_photo", "carrots"};

// Ids of views in listview_layout
int[] to = {R.id.item_header, R.id.item_photo, R.id.item_carrot};

// Instantiating an adapter to store each items
// R.layout.listview_layout defines the layout of each item
SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), 
aList, R.layout.itemlist, from, to);

// Getting a reference to listview of main.xml layout file
ListView item_list = ( ListView ) findViewById(R.id.listitems);
item_list.setAdapter(adapter);

以下是我获取下载图片的地方:

private class AccessImages extends AsyncTask<String, Void, Bitmap> {

    protected Bitmap doInBackground(String... urladds){
        return downloadImage(urladds[0]);
    }

    protected void onPostExecute(Bitmap bmp) {
        itemphoto[itemcount] = bmp;
        itemcount++;
    }
}

1 个答案:

答案 0 :(得分:0)

  

如果您喜欢这种方式,则需要花费太多时间。     而不是使用延迟加载概念。     by following this link you can resolve this issue