取消'退出视图'在GridView中查看后台任务

时间:2015-01-14 16:31:26

标签: android image gridview android-asynctask android-adapter

我正在寻找注册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

1 个答案:

答案 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