B4A Library [Lib] UltimateListView

I've been working on this project for a long time and I'm very proud to release the version 4 today.

The UltimateListView is, as its pompous name says, THE ListView.

  • It can handle very long lists. This is a screenshot of a list with 245813 items, all different:

    verylonglist.jpg


  • It can mix different layouts (and they can be changed dynamically). You can use it as an expandable ListView:

    layouts.jpg


  • It has a low memory footprint and is very fast (this report comes from the Performance demo where the list has to display 128901 distinct words read from a database and the used device is a Huawei Honor single core 1.4 Ghz):

    performance.png


  • It can scroll in both directions thanks to its swipe detector:

    tables.jpg


  • The swipe detector can also be used to implement a swipe-to-dismiss or a swipe-to-reveal:

    swipedetector.png
  • You can easily add editors to your table to change its content:

    celledit.jpg


  • You can animate the items when they are added, removed, replaced or when the list is scrolled (with your own custom animation):

    animationclap.png


  • It can stack items from the bottom:

    stackfrombottom.png


  • It supports drag & drop operations (internal & external):

    dragndrop.png


  • You can synchronize lists with different item heights:

    grid.jpg
The examples will show you how to implement a Pull-to-Refresh, create sticky headers or combine several lists to make a wheel. One of the examples is an improved version of my File Explorer class.

All texts and images can be loaded asynchronously (from Internet, from a database or from a local folder), so you can scroll even if the data are not fully loaded.

The list has its own state manager.

Since September 2018, ULV is available for free. You can still donate for it if you wish.
To send the money, just click on the Donate button below (the amount to enter is in euros):


Note that UltimateListView is not a wrapper around the work of someone else. It is 100% my own code and it is based upon the standard Java ListView of Android.

The UltimateListView does not work with Android versions < 2. It cannot work with B4J or B4i.

Current version: 4.50

DOWNLOAD HERE:
 
Last edited:

Informatix

Expert
Licensed User
Longtime User
One more question:
What are the licensing terms for ULV?

Excerpt of the license:
By purchasing the UltimateListView package, you are granted the right to include the provided classes and libraries in any BasicForAndroid project, commercial or non-commercial, without any restriction.

The libraries must be linked to your project and included in a APK file prior to any release to a third-party.

The classes must be compiled with the obfuscation enabled.

You cannot distribute or resell any part of this package without my consentment.
 

Informatix

Expert
Licensed User
Longtime User
New version 1.3

To my customers: I just sent an email for the new version 1.3. Check your spam folder if there's nothing in your inbox. The next version will be probably to download from a server because you are too numerous now and I don't trust bulk emails.

I'm working on an improved algorithm for the display cache because some new tablets and smartphones allocate a ridiculous amount of memory to each program compared to their screen resolution. For example, a Nexus 7 has a heap size of 64MB for a 1280x740 screen, which is proportionally less than most mid-range smartphones (32 MB for 854x480).
That leads to some Out of Memory exceptions in extreme cases and I want to avoid this.
 

susu

Well-Known Member
Licensed User
Longtime User
Hi Federic,

Just quick question: Can UltimateListView speed up when loading phone's contact? I used example code but the speed is very low.

Thank you.
 

Informatix

Expert
Licensed User
Longtime User
Hi Federic,

Just quick question: Can UltimateListView speed up when loading phone's contact? I used example code but the speed is very low.

Thank you.

I can't say anything without viewing your code. I don't know how you load the data in the list. Use my email if you want to send me your project.
As a general rule, if a data is very slow to retrieve, the UltimateListView can't do anything for that. But in this case, there's no reason for a slow access to data stored on the device.
 

salanmar

Member
Licensed User
Longtime User
I just donated 25 euros, merry christmas.
 

lalonja

New Member
Licensed User
Longtime User
reading images from db

Hi all.

Does anyone know how to insert directly images stored on a db? I have articles and images stored on a mysql db file and I want to use ULV to show image+description + price.

Thanks!

Merry Chirstmas!
 

Informatix

Expert
Licensed User
Longtime User
Hi all.

Does anyone know how to insert directly images stored on a db? I have articles and images stored on a mysql db file and I want to use ULV to show image+description + price.

Thanks!

Merry Chirstmas!

With the next version, you will be able to access a SQLite database with LoadImageAsync. Unfortunately, that won't work with a remote MySQL DB (or any other non-SQlite engine).
But there's a solution: get your bitmaps the usual way (with a query) and put them yourself in the cache once loaded (FeedDiskCacheWithBitmap and FeedMemoryCacheWithBitmap). LoadImageAsync will use the local copy in cache (set location to an empty string).
 

Sytek

Active Member
Licensed User
Longtime User
Demo_CSVTable

Hi Federic!
If I want to load an sqlite database instead of a CSV file, is it possible? I need to modify data via cell edit. :sign0188:
Best Regards!
 

Informatix

Expert
Licensed User
Longtime User
Hi Federic!
If I want to load an sqlite database instead of a CSV file, is it possible? I need to modify data via cell edit. :sign0188:
Best Regards!

Hello,

You have two examples demonstrating this: Demo_DBTable (small database) and Demo_WordDBTable (huge database). The right solution depends on the size of your SQLite database.
When you edit a cell, send the changes to the database with an update query.
 

Sytek

Active Member
Licensed User
Longtime User
Hello,

You have two examples demonstrating this: Demo_DBTable (small database) and Demo_WordDBTable (huge database). The right solution depends on the size of your SQLite database.
When you edit a cell, send the changes to the database with an update query.

Thank's :)
 

Sytek

Active Member
Licensed User
Longtime User
I sent an email to each customer with a download link for the version 2.1. If you do not see anything in your inbox, check your spam folder, and if you still do not see anything, send me an email.

I'm sorry i did not find the images table used in Gallery2
 

cmartins

Member
Licensed User
Longtime User
Informatix
I'm trying to complete a list with ~1000 small gifs (8kb) , but I always get the message out of memory around 250 loaded, I've tried various solutions as a checklist, scrollview, etc.

Is your library will be able to resolve this?
 

Attachments

  • customview.zip
    33.6 KB · Views: 347

aaronk

Well-Known Member
Licensed User
Longtime User
Hello,

If I use this 'UltimateListView' is it going to work with the AHQuickAction ?

At the minute the AHQuickView is not displaying correctly when you press a label or button etc from a ScrollView (when you scroll down the list). So I am wondering if using the 'UltimateListView' is going help any?

You can view my code on this page: http://www.b4x.com/forum/basic4andr...-ahquickaction-not-working-my-scrollview.html

Any ideas how to get my sample working the way it is or am I better to use the 'UltimateListView' ?
 
Top