gpt4 book ai didi

android - picasso 图像在 ListView 中滚动时重新加载

转载 作者:行者123 更新时间:2023-11-29 00:16:31 26 4
gpt4 key购买 nike

我遇到了一个问题,每当我滚动浏览我的 ListView 时,图像似乎都在不断重新加载,这使得 ListView 滞后很多。我能做些什么来防止这种情况发生,我以前在我的 ListView 中这样做过,但它没有这样做。

public class PostsAdapter extends BaseAdapter{
public List<PostList> postList;
protected Context context;

public void add(PostList object,int position) {
postList.add(position,object);
}

public PostsAdapter(Context context) {
this.context = context;
postList = new ArrayList<PostList>();
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return postList.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return postList.get(position);
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView == null){
convertView = LayoutInflater.from(context).inflate(R.layout.posts_list, null);
holder = new ViewHolder();
holder.image = (ImageView)convertView.findViewById(R.id.postImage);
holder.username = (TextView)convertView.findViewById(R.id.postUsername);
convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
}
holder.username.setText(postList.get(position).user);
Picasso.with(context).load(postList.get(position).postPicture).into(holder.image);

return convertView;
}
static class ViewHolder{
ImageView image;
TextView username;
}

最佳答案

当用户触发 fling MotionEvent 时,应用程序正在下载图像,它需要停止,专注于滚动,然后在运动停止后立即重新开始下载图像。这样做的效果几乎是神奇的。

此外,Google 还提供了代码来展示它是如何完成的。您可以在这里找到它 - https://github.com/google/iosched

这是一个简短的 fragment ,说明如何添加滚动监听器来停止和启动队列。

listView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView listView, int scrollState) {
// Pause disk cache access to ensure smoother scrolling
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING) {
imageLoader.stopProcessingQueue();
} else {
imageLoader.startProcessingQueue();
}
}

@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});

关于android - picasso 图像在 ListView 中滚动时重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26501112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com