Android 如何检测在游标适配器上调用的最后一个bindview()

Android 如何检测在游标适配器上调用的最后一个bindview(),android,Android,我有一个游标适配器,可以将数据加载到列表片段中。根据定义,每当屏幕上发生改变可见项目数量或位置的任何变化时,它的bindView都会被多次调用 要求:我想在绑定所有列表项后发送一次异步http请求。例如,如果屏幕上有8个可见项,则bindView将被调用大约8次。我想在第8次调用结束时启动异步任务。是否有方法检查对bindview的最后一次调用,以便我可以启动异步任务?无法找到响应UI事件对bindview的最后一次调用。最好在onScrollListener中启动异步任务 问题是cursor.

我有一个游标适配器,可以将数据加载到列表片段中。根据定义,每当屏幕上发生改变可见项目数量或位置的任何变化时,它的bindView都会被多次调用


要求:我想在绑定所有列表项后发送一次异步http请求。例如,如果屏幕上有8个可见项,则bindView将被调用大约8次。我想在第8次调用结束时启动异步任务。是否有方法检查对bindview的最后一次调用,以便我可以启动异步任务?

无法找到响应UI事件对bindview的最后一次调用。最好在onScrollListener中启动异步任务

问题是cursor.getPosition、getListView.getFirstVisiblePosition、getListView.getLastVisiblePosition和getListView.getChildCount之间的关系在bindView中始终保持不变,无论是第一次调用还是第八次调用,或是其间的任何调用

所以,下面的说法总是正确的-

在向下滚动的情况下:

getListView().getFirstVisiblePosition() + getListView().getChildCount() = cursor.getPosition()
getListView().getLastVisiblePosition() - getListView().getChildCount() = cursor.getPosition()
在向上滚动的情况下:

getListView().getFirstVisiblePosition() + getListView().getChildCount() = cursor.getPosition()
getListView().getLastVisiblePosition() - getListView().getChildCount() = cursor.getPosition()

不,除非您扩展适配器并覆盖bindView,或者您可以使用假ViewBinderi扩展适配器并覆盖bindView。但我没有看到任何类型的字段或方法指示特定的bindView调用是否是响应UI事件的最后一个调用。获取bindView的Cursor参数并调用getPosition,您几乎是完蛋了,但这不会让您知道该游标项在列表视图中占据1到8的位置。因此,我仍然不知道何时启动异步任务。getfirstvisibleposition和GetLastVisiblePosition我不明白,让我们假设第一个和最后一个可见位置定义了一个窗口,例如我们有一个窗口12..17,并且调用了bindview,一个新窗口是15..20,所以这两个窗口的公共部分是15..17,所以您知道只有位置18..20将被绑定,这同样适用于窗口关闭时,例如10..15是的,您是对的。但我在回答中解释的是,无法通过编程方式识别最后一次调用bindView来响应类似scroll这样的UI事件。以您的示例为例,当发生滚动时,“窗口”会随着每次调用bindView而改变。从12..17,然后13..18,然后14..19等等一直到18..20。但无法通过编程方式知道bindView在达到18..20之后不会被调用。