Bug 60950 - Listview Performance Issue On Infinite Scroll
Summary: Listview Performance Issue On Infinite Scroll
Status: RESOLVED ANSWERED
Alias: None
Product: Forms
Classification: Xamarin
Component: Forms ()
Version: 2.5.0
Hardware: PC Windows
: --- normal
Target Milestone: ---
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2017-12-01 22:56 UTC by Hakan
Modified: 2017-12-02 01:05 UTC (History)
2 users (show)

Tags:
Is this bug a regression?: ---
Last known good build:

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.


Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:
Status:
RESOLVED ANSWERED

Description Hakan 2017-12-01 22:56:52 UTC
Using the observable collection, I am implementing infinite scroll and adding 50 additional rows to the end of the listview as the 30th row from the bottom appears on screen. This causes stutters and frame drops each and every time. I also tried it with data cached on the client as to eliminate its connection with the http request and have seen the same result regardless.

It happens both on Android and iOS.

There is no performance issue when scrolling as long as additional rows are not added.

Here is the basic layout I am using as a row:

<ContentView>
  <StackLayout>
    <StackLayout>
      <StackLayout>
        <StackLayout>
          <Label></Label>
          <Label></Label>
        </StackLayout>
        <Image></Image>
      </StackLayout>
    </StackLayout>
    <ActivityIndicator></ActivityIndicator>
  </StackLayout>
</ContentView>
Comment 1 Paul DiPietro [MSFT] 2017-12-01 23:20:31 UTC
The layout structure you are using for a single row's view is going to have severe performance implications in your use case. I suggest making adjustments to your layout to minimize the number of nested StackLayouts in particular.
Comment 2 Hakan 2017-12-02 01:05:00 UTC
Using RecycleElement seems to solve the performance issue but unfortunately it cannot be used because of the numerous severe bugs it possesses, especially on iOS:(