【问题标题】:Android Picasso lazy loadAndroid Picasso 懒加载
【发布时间】:2013-10-20 01:55:38
【问题描述】:

我在我的 android 项目中使用 Picasso 库。我的主要活动中有一个 ListView。所有行项都填充有来自使用 SAXParser 解析的 XML 的数据。我创建了处理列表项的自定义列表适配器。如何使用毕加索实现某种延迟加载图像。这是我的代码(自定义适配器):

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;
    }
}

【问题讨论】:

  • 延迟加载到底是什么意思? getView() 方法只会在视图即将出现在屏幕上时调用。 Picasso 然后将获取图像并将其加载到 ImageView 中。这已经是延迟加载了。
  • 我是一个比较少的安卓菜鸟。 listview 项目中的图像加载速度很慢。我必须等待大约 30 秒。直到加载一张图片。
  • 30 秒可能是一个缓慢的下载、一个巨大的位图或组合。我建议您检查您下载的图像并使用fit()resize()

标签: android loading lazy-evaluation picasso


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2016-02-08
    • 2018-07-14
    相关资源
    最近更新 更多