我能想到两种方法。首先是按照您的建议检查所选元素。这类似于我对这个 SO post 的回答。侦听器本身并不昂贵,只要您在侦听器中进行轻量级检查,那么它对性能的影响可以忽略不计。这种方法的缺点是,如果您使用的是触摸屏设备(向后运行),您将无法获取滚动位置,因为单独滚动不会触发项目选择。
选项1:
final int FETCH_NEXT_THRESHOLD = 5; // or NUM_COLUMNS * 2 if it's a grid
final ListRow listRow = (ListRow) row;
final ArrayObjectAdapter currentRowAdapter = listRow.getAdapter();
int selectedIndex = currentRowAdapter.indexOf(item);
if (selectedIndex != -1 && (currentRowAdapter.size() - index < FETCH_NEXT_THRESHOLD) {
// One of the last FETCH_NEXT_THRESHOLD items was selected.
// Trigger next page fetch now.
}
选项 2:
另一种方法依赖VerticalGridView
于RecyclerView
. 您可以使用类似于此类的东西。这将检查子元素的数量以及当前正在查看的元素。这对性能有更大的影响,因为它被更频繁地击中(但仍然是非常小的影响)。您可以通过ScrollListener
在您VerticalGridFragment
的 'sVerticalGridView
中添加一个您最有可能必须在该Presenter
级别执行的操作来实现此目的。
结论:
我建议使用选项 1,因为它更容易实现并且可以适应大多数用例。但如果您担心触摸屏设备运行后仰,您可能需要采用类似于选项 2 的方法。