Android SimpleAdapter图像和文本列表
我目前正在尝试在Android上开发一个应用程序,它允许用户在列表视图中列出自己的对象 我面临一个将objet图像的url字符串转换为imageview的问题 我已经成功地从JSON中检索到了对象url,但一旦得到它,我就不知道如何将它放在imageView中 这是我的代码:Android SimpleAdapter图像和文本列表,android,json,listview,imageview,simpleadapter,Android,Json,Listview,Imageview,Simpleadapter,我目前正在尝试在Android上开发一个应用程序,它允许用户在列表视图中列出自己的对象 我面临一个将objet图像的url字符串转换为imageview的问题 我已经成功地从JSON中检索到了对象url,但一旦得到它,我就不知道如何将它放在imageView中 这是我的代码: @Override protected String doInBackground(String... arg0) { try { JSONParser jParser =
@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);
}
}
您应该使用像毕加索或Glide这样的库从url加载图像。请记住,您必须先下载它才能在ImageView中显示它。 这让你的生活更轻松,但是你可以不用图书馆就下载它,尽管我找不到原因 这里有一个使用毕加索的示例代码:
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
您可以在这里查看:
Glide也是一个很好的选择,在使用方面非常相似
还有很多,但我只是提到了我最喜欢的
另外,如果这是一个项目列表,那么您应该在适配器内部的getView方法中执行此操作 您应该为ListView创建自己的自定义适配器 要从URL获取图像,您可能需要使用库。在适配器的getView中使用此库,可以将此行添加到设置映像中
Picasso.with(getContext())
.load(mYourItems[position].getURL())
.into(imageView);
mYourItems是此适配器正在迭代的项的集合。position也是当前行的索引。我认为您应该创建自己的BaseAdapter实现,因为SimpleAdapter对于您的目标来说不够灵活。您可以使用一些第三方库从URL异步加载图像并将其插入视图。例如,您可以使用或