Ленивая загрузка Android Picasso

Я использую библиотеку Picasso в своем проекте Android. У меня есть ListView в моей основной деятельности. Все элементы строки заполняются данными из XML, которые анализируются с помощью SAXParser. Я создал собственный адаптер списка, который обрабатывает элементы списка. Как я могу добиться какой-то ленивой загрузки изображений с Picasso. Вот мой код (пользовательского адаптера):

public class PicassoAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;

    public PicassoAdapter(Activity a, ArrayList<HashMap<String, String>> d)
    {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
         return data.size();
    }


    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
         return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.list_item, null);

        TextView title = (TextView) vi.findViewById(R.id.pid); // title
        ImageView image = (ImageView) vi.findViewById(R.id.slika1);//  slika

        HashMap<String, String> song = new HashMap<String, String>();
        song = data.get(position);

        Log.i("&&&&&&&&&&&&&&&",data.get(0).get(MainActivity.KEY_TITLE));

        // Setting all values in listview
        title.setText(song.get(MainActivity.KEY_TITLE));
        Picasso.with(vi.getContext()).load(song.get(MainActivity.KEY_THUMB_URL)).into(image);  
        return vi;
    }
}

person Sysrq147    schedule 11.10.2013    source источник
comment
Что именно вы подразумеваете под ленивой загрузкой? Метод getView() будет вызываться только тогда, когда представление появится на экране. Затем Пикассо извлечет и загрузит изображение в ImageView. Это уже ленивая загрузка.   -  person James McCracken    schedule 12.10.2013
comment
Я более-менее новичок в андроиде. Изображения в элементах списка загружаются очень медленно. Мне нужно подождать около 30 секунд. пока не загрузится одно изображение.   -  person Sysrq147    schedule 12.10.2013
comment
30 секунд могут быть медленной загрузкой, огромным растровым изображением или их комбинацией. Я рекомендую вам проверять изображения, которые вы загружаете, и использовать fit() или resize().   -  person dnkoutso    schedule 28.01.2014


Ответы (1)


Для ListView требуется заполнитель

Picasso.with(vi.getContext())
    .load(song.get(MainActivity.KEY_THUMB_URL))
    .placeholder(R.drawable.user_placeholder)
    .error(R.drawable.user_placeholder_error)
    .into(image);
person Girish Patel    schedule 31.01.2018