2014-11-09 2 views
0

У меня есть изображение в URL-адресе сервера, после чего я просматриваю и показываю на Карту. Я сделал это в android, используя библиотеку LoaderImageView и показывая, но в Glass я передаю ссылку url на карту. Но я получил эту ошибку "Метод addImage (Drawable) в типе CardBuilder не применимый для аргументов (String)"Как отобразить изображение с url

Код:

public static Drawable drawableFromUrl(String url) { 
     Bitmap x; 


     try { 
      HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); 
      connection.connect(); 
      InputStream input = connection.getInputStream(); 

      x = BitmapFactory.decodeStream(input); 
      return new BitmapDrawable(x); 

      } catch(MalformedURLException e) { 
      //Do something with the exception. 
     } 

     catch(IOException ex) { 
      ex.printStackTrace(); 
     } 
     return null; 

    } 


    View view = new CardBuilder(getBaseContext(), CardBuilder.Layout.TITLE) 
    .setText("TITLE Card") 
    // .setIcon(R.drawable.ic_phone) 
    .addImage(drawableFromUrl(link)) 
    .getView(); 

ответ

1

From the doc, addImage принимает вытяжку, INT или Bitmap. Он не принимает строку.

Вы можете скачать изображение с помощью AsyncTask или нить или что угодно и преобразовать его в Drawable. Затем вы можете вызвать addImage.

Например:

// new DownloadImageTask().execute("your url...") 

private class DownloadImageTask extends AsyncTask<String, Void, Drawable> {  
    protected Drawable doInBackground(String... urls) { 
     String url = urls[0]; 
     return drawableFromUrl(url); 
    } 

    protected void onPostExecute(Drawable result) { 
     // yourCardBuilder.addImage(link) 
     // or start another activity and use the image there... 
    } 
} 

public static Drawable drawableFromUrl(String url) throws IOException { 
    Bitmap x; 
    HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); 
    connection.connect(); 
    InputStream input = connection.getInputStream(); 
    x = BitmapFactory.decodeStream(input); 
    return new BitmapDrawable(x); 
} 

Я не проверял код, но надеюсь, что вы получите эту идею.

Также смотрите:

Edit:

private Drawable drawableFromUrl(String url) { 
    try { 
     Bitmap bitmap; 
     HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     bitmap = BitmapFactory.decodeStream(input); 
     return new BitmapDrawable(bitmap); 
    } catch (IOException e) { 
     return null; 
    } 
} 

private class DownloadImageTask extends AsyncTask<String, Void, Drawable> { 

    protected Drawable doInBackground(String... urls) { 
     String url = urls[0]; 
     return drawableFromUrl(url); 
    } 

    protected void onPostExecute(Drawable result) { 
     stopSlider(); 
     if(result != null) { 
      mCardAdapter.setCards(createCard(getBaseContext(), result)); 
      mCardAdapter.notifyDataSetChanged(); 
     } 
    } 
} 

Смотрите мой полный пример на my GitHub repo. SliderActivity может быть вам полезна.

+0

Получение ошибки в необработанном типе исключения IOException – karthees

+0

Проверьте мой отредактированный код. Тем не менее он не работает. – karthees

+0

Вы можете проверить мое редактирование или посмотреть полный пример GitHub. – pt2121