我目前正尝试在Android上开发一款应用,允许用户在listView中列出自己的对象。
我遇到了将objet图像的url字符串转换为imageview的问题。
我已经成功从JSON中检索了对象网址,但是一旦得到它,我就不知道如何将它放在我的imageView中。
这是我的代码:
@Override
protected String doInBackground(String... arg0) {
try {
JSONParser jParser = new JSONParser();
JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);
dataJsonArr = json.getJSONArray("objects");
//Création de la ArrayList qui nous permettra de remplire la listView
listItem = new ArrayList<HashMap<String, String>>();
// On parcour le JSON
for (int i = 0; i < dataJsonArr.length(); i++) {
JSONObject c = dataJsonArr.getJSONObject(i);
// Formation des items de notre ListView
map = new HashMap<String, String>();
map.put("titre", c.getString("title"));
map.put("price", c.getString("price"));
map.put("addedDate", c.getString("addedDate"));
map.put("img", c.getString("picture_url"));
listItem.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String message) {
Bitmap bmap = getBitmapFromURL(listItem.get(0).get("img").toString());
image.setImageBitmap(bmap);
//Création d'un SimpleAdapter qui se chargera de mettre les items présent dans notre list (listItem) dans la vue fragment_add_objet
mSchedule = new SimpleAdapter (getActivity(), listItem, R.layout.layout_user_objects,
new String[] {"img", "titre", "price", "addedDate"}, new int[] {R.id.img, R.id.titre, R.id.price, R.id.addedDate});
//On attribut à notre listView l'adapter que l'on vient de créer
maListViewPerso.setAdapter(mSchedule);
}
}
答案 0 :(得分:0)
您应该使用像Picasso或Glide这样的库来从网址加载图片。请记住,您必须先下载它才能在ImageView中显示它。 这会让您的生活更轻松,但您可以随时下载而无需使用图书馆,但我找不到理由。
这里有一个使用Picasso的示例代码:
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
您可以在此处查看:http://square.github.io/picasso/
Glide也是一个很好的选择,在使用方面非常相似。
https://github.com/bumptech/glide
还有更多,但我刚才提到了我最喜欢的那些。
此外,如果这是一个项目列表,您应该在getView()方法中的适配器内执行此操作。
答案 1 :(得分:0)
您应该为ListView创建自己的自定义适配器。 It is pretty simple
要从网址中提取图片,您可能需要使用Picasso库。在适配器的getView
中使用此库,您可以添加此行来设置图像。
Picasso.with(getContext())
.load(mYourItems[position].getURL())
.into(imageView);
mYourItems
是此适配器迭代的项目集合。 position
也是当前行的索引。
答案 2 :(得分:0)