【发布时间】:2016-07-18 02:53:57
【问题描述】:
我正在尝试提取从要显示的 JSON 部分构造的几个图像 url。
我能够检索 JSON,然后从 JSON 构造几个 url,将其显示为屏幕上的文本 ( String )。
在 AsyncTask 结束时,我使用 Universal Image Loader 来显示单个图片,以防 JSON 包含单个图片的信息,但问题是当从 JSON 构造多个 url 时:
finalBufferData.append("http://res.cloudinary.com/CLOUD_NAME/" + fileType +
"/upload/v" + version + "/" + publicID + "." + format + "/n");
它只在单独的行中创建一个地址字符串(如果显示在 textView 中),但传递给 UIL 是不可接受的。
所以我不知道该怎么做,因为我试图在 listView 中以线性方式或不同方式显示图像视图,以显示多个图像,具体取决于 JSON 信息。
任何关于如何做到这一点的建议都会很棒。
我的 AsyncTask 编码它;
public class JsonTask extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
String finalJson = buffer.toString();
JSONObject parentObject = new JSONObject(finalJson);
JSONArray parentArray = parentObject.getJSONArray("resources");
StringBuffer finalBufferData = new StringBuffer();
for(int i=0; i<parentArray.length(); i++) {
JSONObject finalObject = parentArray.getJSONObject(i);
String publicID = finalObject.getString("public_id");
String version = finalObject.getString("version");
String format = finalObject.getString("format");
finalBufferData.append("http://res.cloudinary.com/CLOUD_NAME/" + fileType +
"/upload/v" + version + "/" + publicID + "." + format);
}
return finalBufferData.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
ImageLoader.getInstance().displayImage(result, imageViewDisplayUp);
//imagesList.setText(result);
}
}
}
【问题讨论】:
标签: json android-studio android-asynctask imageview android-linearlayout