Xamarin.Android中ListView加载时Scroll事件无故触发的原因?
解决Xamarin.Android ListView Scroll事件触发导致的崩溃问题
这个问题我之前也碰到过!核心原因是ListView的Scroll事件不止在用户手动滚动时触发——控件完成初始化布局、数据更新引发的滚动、甚至Adapter为空时的控件自身布局调整,都会触发这个事件。而你在事件处理方法里直接抛出了NotImplementedException,自然一加载就会触发异常崩溃。
给你两个可行的解决思路:
1. 移除异常抛出,替换为空实现或实际逻辑
如果暂时还没写滚动处理的逻辑,直接把异常去掉,留空方法体即可,不要用NotImplementedException(这个异常是用来标记未完成的接口实现,不适合事件处理这类会被主动调用的方法):
private void ListView_Scroll(object sender, AbsListView.ScrollEventArgs e) { // 后续需要处理滚动逻辑时,在这里补充代码 // 暂时不需要的话留空就好 }
2. 过滤掉非用户手动触发的滚动事件
如果只需要响应用户手动滚动的操作,可以通过e.ScrollState来判断滚动状态,只处理用户触发的滚动:
private void ListView_Scroll(object sender, AbsListView.ScrollEventArgs e) { // 只处理用户触摸滚动(TouchScroll)或惯性滚动(Fling)的情况 if (e.ScrollState == ScrollState.TouchScroll || e.ScrollState == ScrollState.Fling) { // 在这里编写你的滚动处理逻辑,比如判断滚动方向、加载更多等 } }
另外补充一下:ListView的Scroll事件触发时机比较宽泛,只要控件的滚动位置或状态发生变化就会通知,所以即使Adapter为null,控件自身完成布局初始化时也会触发这个事件,这是控件的正常行为,不用奇怪~
内容的提问来源于stack exchange,提问作者S. ten Brinke
相关产品推荐
相关产品推荐

