Android SimpleAdapter图像和文本列表

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 =

我目前正在尝试在Android上开发一个应用程序,它允许用户在列表视图中列出自己的对象

我面临一个将objet图像的url字符串转换为imageview的问题

我已经成功地从JSON中检索到了对象url,但一旦得到它,我就不知道如何将它放在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);
    }


}

您应该使用像毕加索或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异步加载图像并将其插入视图。例如,您可以使用或