ListView优化-滚动状态停止加载网络图片

来源:互联网 发布:串口gps数据解析c程序 编辑:程序博客网 时间:2024/05/20 14:24

老套路,先看效果图
这里写图片描述

当用户迅速滑动列表的时候,只要滚动到的地方,就会产生图片请求,这将产生大量的请求工作 。显然这不是我们想要的效果。
解决思路:
1,监听列表滚动状态,设置变量isScrolling。
2,根据isScrolling的值,在Adapter里面决定是否要加载图片。
3,如果已经加载到内存的,直接加载。

关键代码:

listview.setOnScrollListener(new AbsListView.OnScrollListener() {            @Override            public void onScrollStateChanged(AbsListView absListView, int i) {                if (i == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {                    isScrolling= false;                       adapter.notifyDataSetChanged();                } else {                    isScrolling= true;                }            }            @Override            public void onScroll(AbsListView absListView, int i, int i1, int i2) {            }        });

Adapter中的关键代码(大体思路):

 if (!ListViewActivity.isScroll || data.get(i).isLoad) {            Glide.with(viewGroup.getContext()).load(data.get(i).img).into(viewHolder.img);            data.get(i).isLoad = true;        } else {            Glide.with(viewGroup.getContext()).load(R.mipmap.ic_launcher).placeholder(R.mipmap.ic_launcher).into(viewHolder.img);        }
阅读全文
0 0
原创粉丝点击