我必须显示一个帖子列表,其中一些包含图片(想想像twitter一样)并在我在ListView上滚动时加载更多,但图像需要几秒钟才能显示。如何毫不拖延地完成负载?目前我正在使用 Picasso
进行此操作这是我的代码:
ListView lv = findViewById(R.id.list_feed);
arrayPosts = fillArray(data);
adapter= new PostAdapter(this, arrayPosts);
lv.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
int lastIndexInScreen = visibleItemCount + firstVisibleItem;
if (lastIndexInScreen >= totalItemCount && totalItemCount > 0 && !isLoading) {
isLoading = true;
loadMore();
}
}
});
lv.setAdapter(adapter);
我的适配器的getView()方法:
public View getView(int i, View view, ViewGroup viewGroup) {
Post post = (Post) getItem(i);
view = LayoutInflater.from(context).inflate(R.layout.row_post_item, null);
(...)
Picasso.with(context).load(post.getImgProfile()).into(imgProfile);
Picasso.with(context).load(post.getImagePost()).into(imgPost);
(...)
return view;
}
答案 0 :(得分:1)
Picasso
是一种非常好的加载图片的方法,因为它具有缓存功能,我仍然建议您阅读此answer,然后根据您的具体需求决定使用哪个选项。< / p>
答案 1 :(得分:1)
你根本不能毫不拖延地做到这一点。下载速度取决于互联网连接和设备,因此必须存在一些延迟,除非您提前预先加载一页图像(大多数应用程序都是这样做的)。但即使这样,快速滚动也可能会造成一些延迟。
我建议 Glide 。 它比毕加索要快得多。它比Picasso更好地处理下载到内存和缓存利用率。它可以更好地使用GIF,并防止令人讨厌的OutOfMemoryError。当然,您可以加载占位符,直到图像加载等。
它甚至推荐给谷歌。
干杯