Можно ли поместить изображение с URL-адреса в кнопку изображения в Android? - PullRequest
2 голосов
/ 10 мая 2009

Что я хочу сделать - это просмотр списка баз данных С небольшой кнопкой изображения и текстом на правой стороне, Я хочу, чтобы маленькое изображение изменилось с помощью URL, указанного текстовый файл, но я застрял, и правило 2 часа истекло

Для (длина файла) Так что URL-адрес www.site.com/images/(i++).png

Ответы [ 2 ]

10 голосов
/ 16 мая 2009

То, что вы хотите сделать, определенно возможно, однако вам нужно будет вручную загрузить изображение и установить его в ImageButton.

Вот небольшой метод, который вы можете использовать для получения изображения:

private Bitmap fetchImage( String urlstr )
{
    try
    {
        URL url;
        url = new URL( urlstr );

        HttpURLConnection c = ( HttpURLConnection ) url.openConnection();
        c.setDoInput( true );
        c.connect();
        InputStream is = c.getInputStream();
        Bitmap img;
        img = BitmapFactory.decodeStream( is );
        return img;
    }
    catch ( MalformedURLException e )
    {
        Log.d( "RemoteImageHandler", "fetchImage passed invalid URL: " + urlstr );
    }
    catch ( IOException e )
    {
        Log.d( "RemoteImageHandler", "fetchImage IO exception: " + e );
    }
    return null;
}

Конечно, вы захотите обернуть этот метод в поток (используя AsyncTask с SDK 1.5 или UserTask в SDK до 1.5), затем просто вызовите:

myImageButton.setImageBitmap( bitmap );

Я думаю, что это ответило на ваш вопрос, если нет, пожалуйста, уточните подробнее.

2 голосов
/ 12 августа 2011

Приведенный выше код fetchImage завершается с
DEBUG / skia (xxxx): --- декодер-> декодер вернул false
если он вызывается повторно.
(Есть несколько обсуждений этого на StackOverflow.com)

Это не сбой или ошибка, но возвращает нулевое растровое изображение.

Этот альтернативный fetchImage работает (кто-нибудь может сказать почему?):

    private Bitmap fetchImage(String urlstr){
    InputStream is= null;
    Bitmap bm= null;
    try{
        HttpGet httpRequest = new HttpGet(urlstr);//bitmapUrl.toURI());
        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);

        HttpEntity entity = response.getEntity();
        BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
        is = bufHttpEntity.getContent();
        bm = BitmapFactory.decodeStream(is); 
    }catch ( MalformedURLException e ){
        Log.d( "RemoteImageHandler", "fetchImage passed invalid URL: " + urlstr );
    }catch ( IOException e ){
        Log.d( "RemoteImageHandler", "fetchImage IO exception: " + e );
    }finally{
        if(is!=null)try{
            is.close();
        }catch(IOException e){}
    }
    return bm;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...