unoplatform / uno

Open-source platform for building cross-platform native Mobile, Web, Desktop and Embedded apps quickly. Create rich, C#/XAML, single-codebase apps from any IDE. Hot Reload included! 90m+ NuGet Downloads!!
https://platform.uno
Apache License 2.0
8.91k stars 722 forks source link

[Epic] Wasm/Skia `ListView` improvements #234

Open jeromelaban opened 6 years ago

jeromelaban commented 6 years ago

I'm submitting a...

Current behavior

Current ListView implementation for WebAssembly/Skia/macOS is not at feature parity with iOS/Android/UWP:

More to be added in this list.

Expected behavior

Support more features.

Affected platform(s):

dr1rrb commented 5 years ago

Note: Items not always appearing when scrolling seems to be fixed with this commit.

Scrolling offsets was parsed as int while we usually get double. This was causing the managed ScrollViewer to think that it was at the top, while the native was actually much lower.

The fix is in the 'iosTouches' feature branch, I'll merge it in master soon.

ritt-app commented 4 months ago

Hi there! Is there any approximate timeline for the implementation of virtualization for Gridview (i.e. support for ItemsWrapGrid) for Skia? I tried to create a simple grid of a few thousand items, and it nearly crashed my machine due to the lack of virtualization. For me, this is the final roadblock preventing me from adopting Uno!

jeromelaban commented 4 months ago

@ritt-app you may want to try the ItemsRepeater instead, it also supports virtualization.

ritt-app commented 4 months ago

@jeromelaban Thanks for the prompt reply. While it is possible, I would have to recreate UI features like selection and grouping with ItemsRepeater, while not benefitting from customization since I just need a standard GridView experience.

Anyway, I just wanted to thank you and Uno team for creating such an amazing product!

jeromelaban commented 4 months ago

Thanks for your kind words!

Grouping would have to be done manually, we offer an ItemsRepeater selection behavior in the uno toolkit, which may help. For grouping, indeed it's not there by default. It could be that community members have implemented parts of it.

HakanL commented 4 months ago

@ritt-app I was in a similar situation, I needed grouping and I was using the ListView. I ended up using the ItemsRepeater, yes it was some work to refactor the UI code, but in the end it works really well and I was able to implement the header (grouping) I needed as well.

ritt-app commented 4 months ago

@jeromelaban @HakanL Thanks for the advice! I will look more into ItemsRepeater and uno toolkit.