试图用json对象理解主要布局上的imageview

时间:2014-07-21 06:43:49

标签: android html json

我正在尝试将图片加载到图片视图中。图像的来源是JSON对象,格式类似于html图像,即图像标签。我已经看过像Picasso和通用图像加载器这样的潜在解决方案,但我不相信它们符合我想要的解决方案。我也尝试过下载图像然后将其加载到视图中的解决方案,但由于格式化源的方式,图像没有显示给我。 如何清洁图像源并将其加载到图像视图中?

我的JSON结构如下:

{"entries":[{"introtext":"<p><img src='something.jpg'/></p>"}]}

2 个答案:

答案 0 :(得分:0)

尝试使用网络视图。

WebView view=(WebView) findViewById(R.id.webViev);
        String data=new String();

如果在assets文件夹中使用本地图像,请按以下步骤操作。

 data="<html><head></head><body><br/> <img src=\"file:///android_asset/photo.jpg\"  height=\"150\" width=\"150\"/></body></html>";

    view.loadDataWithBaseURL(null, data,"text/html", "utf-8",null); 

如果要从url加载图像,请使用公共Drawable getDrawable(String source)来自Html.ImageGetter的函数。

每次在html中检测到标记时,都会调用此函数。

因此,覆盖此方法可以附加必要的前缀,例如

htt://yourdomain.com/images/ to the "something.jpg.." from the json .

你必须从这个函数返回一个drawable of image。

答案 1 :(得分:0)

WebView可能是您的方法,但是根据响应的实际内容,您可能仍需要解析HTML以获取图像的来源 - 附加基本URL。完成后,您已经在字符串变量中拥有完整的图片网址 - 因此您可以加载图片并将其设置为ImageView

关于如何将图片从网址设置为ImageView,有很多问题。我只是说明解析您的响应以获取该URL是多么简单。我将此答案基于JSOUP library来解析HTML - 下载jar并将其包含在您的项目中。

private final static String BASE_URL = "http://www.somesite.com/appdir/";

// get your json in whichever way you do it.
String json = ...;

// parse the json and get the html corresponding to the first element in the array
String htmlSource = new JSONObject(json).getJSONArray("entries")
                                        .getJSONObject(0)
                                        .getString("introtext");

//use jsoup to parse the html source and get the src attribute of the first image
Document doc = Jsoup.parse(htmlSource);
String imgSrc = BASE_URL + doc.getElementsByTag("img").get(0).attr("src");

现在您已拥有图片的完整网址,加载该图片并将其设置为ImageView是一项非常简单的任务。

请注意,您需要在上述代码中添加相应的错误处理。