创建listView后,在listView中更改位图图像

时间:2013-02-01 20:53:33

标签: android android-listview

我有一个基于URL获取favicon的AsyncTask。 我正在创建一个listView,它有一个favicon和一个URL。目前,即使我有AsyncTask,我的UI也会在显示下一个活动之前等待asyncTask完成。

我希望我的活动以存储在drawable中的默认图像开始,并且AsyncTask将在获取每个图标后替换图像。

任何想法怎么做?

我的AsyncTask:

private class DownloadImageTask extends AsyncTask<URL, Void, Bitmap> {
    final AccountListModel model = new AccountListModel(daoSession);

protected Bitmap doInBackground(URL... urls) {
    URL urldisplay = urls[0];
    Bitmap mIcon11 = null;
    try {
        mIcon11 = model.getBitmapFromURL(urldisplay);
        //try to get image
    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();
    }
    return mIcon11;
}

protected void onPostExecute(Bitmap result) {
    faviconBitmap=result;
}}

我目前正在创建列表视图的方式

for (Site site : model.getSites()) {
    try {
    String url = site.getDomain()
    faviconBitmap= new DownloadImageTask().execute(new URL("http", "www."+ url.trim(),"/favicon.ico")).get();
    if (faviconBitmap != null) {
       Bitmap scaled = Bitmap.createScaledBitmap(faviconBitmap,32, 32, true);
       accountsAndUsersList.add(newAccountListScreen(scaled,site.getName());

                    }
                }

    else {
            Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.favicon);
        Bitmap scaled = Bitmap.createScaledBitmap(icon, 32, 32, true);
        accountsAndUsersList.add(new AccountListScreen(scaled,site.getName());
                    }           
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
         sitesToSortArray = new AccountListScreen[accountsAndUsersList
                .size()];
        accountsAndUsersList.toArray(sitesToSortArray);
        AccountListAdapter adapter = new AccountListAdapter(this,
                R.layout.account_list_row, sitesToSortArray);
        listViewAccountList = (ListView) findViewById(R.id.activityAccountList);
        listViewAccountList.setAdapter(adapter);

如果您想查看我的适配器,请告诉我。 谢谢!

0 个答案:

没有答案