S. ten Brinke
S. ten Brinke

Reputation: 3001

Why does the Scroll event unnecessarily fire when a ListView is loaded in (Xamarin.)Android?

I am working on a Xamarin.Android app. I have a ListView that has the following code:

OnCreate
{   
    //other code here
    listView.Scroll += ListView_Scroll;
}

private void ListView_Scroll(object sender, AbsListView.ScrollEventArgs e)
{
    throw new NotImplementedException();
}

(I simply added the Scroll += ... and the Empty Project to the Custom Row Views project of Xamarin Android.

Immediately when the list is loaded, it throws the NotImplementedException. Even when Adapter is null, it still scrolls!

Why does it scroll when it does not need to? The ScrollState also changes to Fling.

Can someone explain why this happens? I am working on an app that uses this event and this is very annoying to work around.

I don't know if this also happens in Android but I assume it does, that's why I have tagged Android, as well.

Upvotes: 0

Views: 112

Answers (1)

FreakyAli
FreakyAli

Reputation: 16562

ListView in Android doesn't inherit from Scrollview but is very similar to the same

The list-view module is using android.widget.ListView for its Android implementation while behind ScrollView lies android.widget.HorizontalScrolView (or vertical) so basically we have two different native controls with different implementations. Comparing to HorizontalScrollView, the ListView for Android presets much more functionality for listing data and also has specific optimisations so this is the logical choice to implement in nativeScript as well.

Secondly it throws that exception because you have the following line in your scroll event :

 throw new NotImplementedException();

Removing this should solve your problem for the most part.

Why does it scroll when it does not need to?

What actually happens here is that the listview Scrolls To the current Position

Goodluck Happy Coding!

Upvotes: 0

Related Questions