我正在寻找注册GridView(或者ListView可能也是)中的项目被删除或者其内容被删除,或者不再可见以便可以立即取消后台任务的注册
如果我的网格看起来像这样:
* * *
* * *
* * *
每个点代表在后台任务中从设备加载的图像。 然后在所有图像渲染之前快速向下滚动,它仍将等待所有任务完成。
如何取消此操作?似乎无法从适配器上做到这一点。
如果第一行(上)超出"图片"可以这么说,取消那三个任务,如果有,并立即加载第三行(下)。
我是从GridView中调用它还是从适配器处理它?试图从ImageView中寻找一个事件,让我知道它是否已经被删除了焦点或它的内容。找不到任何东西。由于View也被重用了。
示例:
* * * <- Not visible, cancel loading task (at the moment will finish loading these images)
- - -
* * *
* * *
* * * <- Now visible, prioritize these (these will come last, not first)
- - -
* * * <- Not visible yet
* * * <- Not visible yet
答案 0 :(得分:1)
滚动时不应加载图像,因此可以向GridView / ListView添加滚动侦听器,当用户滚动时,应取消加载图像。
gridView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView listView, int scrollState) {
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING) {
//stop loading
} else {
//start loading
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
更多信息:
http://leftshift.io/6-ways-to-make-your-lists-scroll-faster-than-the-wind