Слушатель Scrollview не работает в Xamarin для Android?

Я использую для C # в Xamarin для создания приложения для Android. Я создал расширение scrollview. Вот мой код для этого

public class EndlessScroll : ScrollView { public EndlessScroll (Context context) : base (context) { } public EndlessScroll(Context context, IAttributeSet attrs) : base(context, attrs) { } public EndlessScroll(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle) { } public interface OnScrollViewListener { void onScrollChanged(EndlessScroll v, int l, int t, int oldl, int oldt); } public OnScrollViewListener scrollViewListener; public void setOnScrollViewListener(OnScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } protected void onScrollChanged(int l, int t, int oldl, int oldt) { base.OnScrollChanged(l, t, oldl, oldt); if (scrollViewListener != null) { scrollViewListener.onScrollChanged(this, l, t, oldl, oldt); } } } 

}

Я попытался реализовать его в другом классе. Я не получаю ошибок компиляции, но не регистрируется, когда scrollview попал в нижнюю часть. Вот код, который у меня есть.

 public class getFromParse:Activity, EndlessScroll.OnScrollViewListener { LinearLayout linear; Button buttonSort; Typeface font; protected override void OnCreate (Bundle bundle) { Window.RequestFeature(WindowFeatures.NoTitle); base.OnCreate (bundle); SetContentView (Resource.Layout.debugLog); EndlessScroll scroll = FindViewById <EndlessScroll> (Resource.Id.scrollView); scroll.setOnScrollViewListener (this); 

И вот здесь прослушиватель прокрутки должен обнаруживать, когда он попадает в нижнюю часть.

 public void onScrollChanged(EndlessScroll scrollView, int x, int y, int oldx, int oldy) { // We take the last son in the scrollview View view = (View) scrollView.GetChildAt(scrollView.ChildCount - 1); int diff = (view.Bottom - (scrollView.Height + scrollView.ScrollY)); // if diff is zero, then the bottom has been reached if (diff == 0) { Console.WriteLine ("Scroll changed"); } } 

Если кто-нибудь может помочь мне и сообщить мне, что я делаю неправильно, это будет большой помощью. Кажется, что я все делаю правильно, но я, возможно, что-то пропускаю.

Я узнал, что я делаю неправильно. В случае, если кто-то в будущем должен написать прослушиватель прокрутки, используя c # в Xamarin, вот как я это сделал.

 public class EndlessScroll : ScrollView { private ScrollViewListener scrollViewListener = null; public EndlessScroll (Context context) : base (context) { } public EndlessScroll(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle) { } public EndlessScroll(Context context, IAttributeSet attrs) : base(context, attrs) { } public interface ScrollViewListener { void OnScrollChanged(EndlessScroll v, int l, int t, int oldl, int oldt); } public void setOnScrollViewListener(ScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } protected override void OnScrollChanged(int l, int t, int oldl, int oldt) { base.OnScrollChanged (l, t, oldl, oldt); if (scrollViewListener != null) { scrollViewListener.OnScrollChanged (this, l, t, oldl, oldt); } } } 

Как вы видите, я забыл переопределить OnScrollChanged.

Убедитесь, что вы внедряете интерфейс в действие, в котором вы хотите его использовать. Затем введите этот код в свой oncreate.

  EndlessScroll scroll = FindViewById <EndlessScroll> (Resource.Id.scrollView); scroll.setOnScrollViewListener (this); 

Не забудьте добавить метод ниже, чтобы он мог регистрироваться при изменении прокрутки.

 public void OnScrollChanged(EndlessScroll scrollView, int l, int t, int oldl, int oldt) { // We take the last son in the scrollview View view = (View) scrollView.GetChildAt(scrollView.ChildCount - 1); int diff = (view.Bottom - (scrollView.Height + scrollView.ScrollY)); // if diff is zero, then the bottom has been reached if (diff <= 0 && myResources.isLoading == false) { myResources.isLoading = true; //do stuff here } } 

Как вы можете видеть, приведенный выше код позволяет обнаружить, когда свиток достиг дна, пока контент не загружается.