Установите URL-адрес изображения в listadapter, чтобы показывать изображения с помощью Picasso.

У меня есть простой адаптер списка, в котором я хочу отображать изображения еды с некоторой текстовой информацией. До сих пор я знал, что могу сделать это с такими библиотеками, как AQuery или Picasso, но я не могу понять, как это реализовать после прочтения множества руководств.

Я добавил библиотеку Picasso в свои зависимости. Предположим, мой идентификатор представления изображения — ImgViewFood.

активность

JSONArray jsonArr = jsonObj.getJSONArray("foodnames");
                for (int i = 0; i < jsonArr.length(); i++) {
                    HashMap<String, String> food = new HashMap<>();
                    JSONObject jsonObj = jsonArr.getJSONObject(i);

                    String name = jsonObj.getString("food_name");
                    String url = jsonObj.getString("img_url");

                    food.put("foodname", name);
                    foodList.add(food);
                }
                ListAdapter adapter = new SimpleAdapter(
                        FoodListActivity.this, foodList,
                        R.layout.list_food_detail, new String[]{"foodname"}, new int[]{R.id.view_food_name});

                listviewFood.setAdapter(adapter);

person user3099225    schedule 26.04.2019    source источник
comment
Как использовать Picasso со списком?   -  person ADM    schedule 26.04.2019
comment
проверить официальный сайт Пикассо. square.github.io/picasso   -  person Viswas Kg    schedule 26.04.2019
comment
Я могу отображать изображение с помощью picasso, это не проблема, проблема в том, как я могу реализовать его с помощью listadapter.   -  person user3099225    schedule 26.04.2019
comment
нужен полный код, чтобы посмотреть. где ваш класс ListAdapter?   -  person Sajith    schedule 26.04.2019
comment
Атласт разобрался. Решено. Выкладываю свое решение.   -  person user3099225    schedule 26.04.2019


Ответы (1)


Комплексное решение

Адаптер списка

JSONArray jsonArr = jsonObj.getJSONArray("foodnames");
                for (int i = 0; i < jsonArr.length(); i++) {
                    HashMap<String, String> food = new HashMap<>();
                    JSONObject jsonObj1 = jsonArr.getJSONObject(i);
                    String url = "www.nomadicbong.com/images/";
                    food.put("foodname", jsonObj1.getString("foodname"));
                    food.put("foodid", jsonObj1.getString("foodid"));
                    food.put("imgname",url.concat(jsonObj1.getString("imagename")));
                    foodList.add(food);
                }

               ListAdapter adapter = new CustomImageAdapter(

                        FoodListActivity.this, foodList,
                        R.layout.list_food_detail, new String[]{"foodid", "foodname"}, new int[]{R.id.view_food_id,R.id.view_food_name});

                listviewFood.setAdapter(adapter);

Пользовательский адаптер изображения

import com.squareup.picasso.*;

/**
 * Created by nomadicbong on 4/25/2019.
 */

public class CustomImageAdapter extends SimpleAdapter{

    public CustomImageAdapter(Context context, List<? extends Map<String, ?>> foodList, int resource, String[] from, int[] to){
        super(context, foodList, resource, from, to);
    }
    public View getView(int position, View convertView, ViewGroup parent){

        View v = super.getView(position, convertView, parent);

        ImageView imgvw = (ImageView) v.getTag();
        if(imgvw == null){
            imgvw = (ImageView) v.findViewById(R.id.imgFood1);
            v.setTag(imgvw);
        }
        // get the url from the data in the `Map`
        String url = ((Map)getItem(position)).get("imgname").toString();
        Picasso.with(v.getContext()).load(url).into(imgvw);
        return v;
    }
}
person user3099225    schedule 26.04.2019
comment
Если это ответ, вы можете щелкнуть галочку слева от него, чтобы отметить вопрос как решенный. Он станет зеленым, чтобы подтвердить статус решения. - person halfer; 29.04.2019