0

URL に基づいてファビコンを取得する AsyncTask があります。ファビコンと URL を持つ listView を作成しています。現時点では、AsyncTask がありますが、UI は 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);

私のアダプターも見たい場合はお知らせください。ありがとうございました!

4

0 に答える 0