【发布时间】: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