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:

itgirl

Active Member
Licensed User
Longtime User
thanks for the update ;) amazing work , looking forward for your next Chargeable Lib , would it be as amazing as this one
 

luke2012

Well-Known Member
Licensed User
Longtime User
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:

    View attachment 18467

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

    View attachment 14357

  • 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):

    View attachment 21236

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

    View attachment 14361

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

    View attachment 21240
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.

Due to the important work made, I request a minimum donation amount of 25 euros (about 33 US dollars).

To send the money, just click on the Donate button below (the amount to enter is in euros).

What you'll get:
- the main library and all the libraries required by the examples;
- a complete User's Guide;
- a detailed list of all functions, events and properties;
- a tutorial;
- 15 examples with a few useful and reusable classes.

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.

You can download here the list of all functions and properties, and the table of contents of the user's guide.

15 examples (.APK) can be downloaded from Google Drive.

The UltimateListView does not work with Android versions < 2.

Frédéric Leneuf-Magaud

My compliments for this outstanding work !

I need a listview / scrollview where user can arrange the items position sliding the panels vertically (like google Keep).
Is it supported in your object ?
 

Informatix

Expert
Licensed User
Longtime User
In my update email, I forgot to mention that I tested ULV under Android 4.4W and Android L and saw only a small issue under Android L to get the state of the fast scroller, but that works fine with Android 4.4W which has the same code basis, so it seems that a few things are still unimplemented in the Android L preview.
 

shashkiranr

Active Member
Licensed User
Longtime User
Hi Fred,

Scenario :
Im having a Pagerview Layout in my app where the main page is a ULV_Main list and subpages are having ULV_Child List. The Child items open by expanding (same like ur Gallery_demo). Problem im having is once i click on an item in the ULV_Child, all the items opens up. If i open a new page from the main ULV_Main, this currently opened ULV_Child does not work . !!.

Requirement :
I need to have a ULV in every page i open and it should work independently.

Should i initialize an ULV_CHILD everytime i open a new page?

Kindly let me know your suggestion and inputs.

Regards,
SK

EDIT : I Got this working but facing another exception. I will send the details in the mail Fred.
 
Last edited:

Informatix

Expert
Licensed User
Longtime User
Hi Fred,

Scenario :
Im having a Pagerview Layout in my app where the main page is a ULV_Main list and subpages are having ULV_Child List. The Child items open by expanding (same like ur Gallery_demo). Problem im having is once i click on an item in the ULV_Child, all the items opens up. If i open a new page from the main ULV_Main, this currently opened ULV_Child does not work . !!.

Requirement :
I need to have a ULV in every page i open and it should work independently.

Should i initialize an ULV_CHILD everytime i open a new page?

Kindly let me know your suggestion and inputs.

Regards,
SK
Sorry for the late answer. I had many messages from ULV users to answer these past days. Could you send me an example by email? I don't know what's Pagerview (AHViewPager ?).
 

shashkiranr

Active Member
Licensed User
Longtime User
Sorry for the late answer. I had many messages from ULV users to answer these past days. Could you send me an example by email? I don't know what's Pagerview (AHViewPager ?).

Hi Fred,

Thank you for your reply. Yes it is AH Page Viewer. I will send an example with detailed project information.

Regards,
SK
 

ilan

Expert
Licensed User
Longtime User
sorry informatix, but this lib is so difficult to understand
i donate long time ago and wanted to use this lib but dont understand how to get start

what i am missing in your examples is a simple example of a listview with 10 items and every item has a label, button and checkbox like the
costumlistview of erel

and if i press the button = msgbox,...chkbox = masgbox,...
a simple example that show how to create an item and how to get info from this item and also maybe how to delete this item and change the text of this item

could you make something like this please, thank you
 

Informatix

Expert
Licensed User
Longtime User
sorry informatix, but this lib is so difficult to understand
i donate long time ago and wanted to use this lib but dont understand how to get start

what i am missing in your examples is a simple example of a listview with 10 items and every item has a label, button and checkbox like the
costumlistview of erel

and if i press the button = msgbox,...chkbox = masgbox,...
a simple example that show how to create an item and how to get info from this item and also maybe how to delete this item and change the text of this item

could you make something like this please, thank you
The User's Guide explains the differences between the B4A ListView and the ULV. It's the first thing to read because people took habits with the B4A ListView that lead them on the wrong way. E.g. you don't "fill" the ULV. Data stay external. They are never stored in the list.
Once these differences are understood, the tutorial is there to show you how to build your first list. It starts with a very simple list and ends with an advanced one, with columns, sections and DB access. Did you try it?
You will see that ULV is not difficult to use but you have to do things in a different way. I tried to simplify things as much as I could but there's a point where you cannot mix any more performance and simplicity.
And don't remember that I'm there to answer to questions whenever you feel lost. I will guide you through the jungle of examples.
 

ilan

Expert
Licensed User
Longtime User
the thing is that i tried to understand how to create a simple list like the clv but now success

i would like to create a list with 10 items and every item has a button, label, chkbox, and maybe a image
in the clv i dont have much code to write, only intialize and createitem event thats it

dont understand me wrong i think your lib is awesome, but only use with difficult example like load images from web, ...
i tried to use the gallery demo but could not create what i need, wich example would you recommend me to use?

thank you for your quick answer
 

Informatix

Expert
Licensed User
Longtime User
Did you try the tutorial? The first list of the tutorial is a very basic list of fruits. Only names. In the second list, I add images. You could add buttons or checkboxes. Since this example uses a layout created with the designer, you just have to open the designer and change what you want in the item layout. Once done, there's nothing special to do to be notified of a click on a button. You will use the ordinary Click event and it will be fired as usual. The ULV does not introduce any change in how the other views work. To know the ID of the item where is the button, you have two solutions (that are explained three times in three different places in the User's Guide so I hope that nobody will miss them): using the Tag property of the button to store the ID or calling FindIDInVisibleItems. Very easy. If you have still a doubt, look at the many Click events of the examples.
In the tutorial, I use a map for the first lists, but you can load a CSV file if you prefer. ULV does not store or manage data so this is something outside of the scope of the library. You feed it with what you want, taken from where you want.
 

ilan

Expert
Licensed User
Longtime User
ok thank you informatix i will check the tutorial, i didn't see there is a tutorial i jump right away to the examples :oops:
 

jcesar

Active Member
Licensed User
Longtime User
Hi Informatix

When i put the ULV inside a panel the ulv scrollbar is not displayed. So i can not see all items.
 
Top