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:

Mashiane

Expert
Licensed User
Longtime User
Hi, how can I get the Panel at a particular position same as in ClickedPanel?

As an example, I'm scrolling to a particular position...

B4X:
lvFonts.JumpTo(FontsCnt, False)
lvFonts.EnsureVisibility(FontsCnt)

I want to get the panel at that position as I want to animate it e.g

B4X:
'msa.with(mst.Rubberband).duration(500).playon(ClickedPanel)

but then passing ClickedPanel the correct selected panel at that position.

Thanks
 

Informatix

Expert
Licensed User
Longtime User
Hi, how can I get the Panel at a particular position same as in ClickedPanel?

As an example, I'm scrolling to a particular position...

B4X:
lvFonts.JumpTo(FontsCnt, False)
lvFonts.EnsureVisibility(FontsCnt)

I want to get the panel at that position as I want to animate it e.g

B4X:
'msa.with(mst.Rubberband).duration(500).playon(ClickedPanel)

but then passing ClickedPanel the correct selected panel at that position.

Thanks
By email only, please.
 

wimpie3

Well-Known Member
Licensed User
Longtime User
Can ultimatelistview also "lock" to the top of a line after the list is swiped? It's difficult to explain the effect, but most lists stop scrolling when you stop swiping, showing sometimes half or even less of the text on the list at the top or the bottom. Can ultimatelistview scroll a bit further automatically and lock the top of a line on top of the screen?
 

Informatix

Expert
Licensed User
Longtime User
Can ultimatelistview also "lock" to the top of a line after the list is swiped? It's difficult to explain the effect, but most lists stop scrolling when you stop swiping, showing sometimes half or even less of the text on the list at the top or the bottom. Can ultimatelistview scroll a bit further automatically and lock the top of a line on top of the screen?
I don't answer to questions in this forum.
 

wimpie3

Well-Known Member
Licensed User
Longtime User
I've been trying to contact you through but I did not get a response.
 

luke2012

Well-Known Member
Licensed User
Longtime User
Hi @Informatix,
I'm using ULV with satisfaction until now :)
In my old projects I used an integer number as ItemID (SQLite record id) but now in my new project (for technicals reasons) I must use a alfanumeric ID like this: 550e8400-e29b-41d4-a716-446655440000 (UUID).

In the current version of ULV, AddItem() accept only int type as ItemID. I'm right?
 

Informatix

Expert
Licensed User
Longtime User
Hi @Informatix,
I'm using ULV with satisfaction until now :)
In my old projects I used an integer number as ItemID (SQLite record id) but now in my new project (for technicals reasons) I must use a alfanumeric ID like this: 550e8400-e29b-41d4-a716-446655440000 (UUID).

In the current version of ULV, AddItem() accept only int type as ItemID. I'm right?
Please read posts #748, 751 and 754 in this page.
 
Top