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
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' ?

The problem will probably be the same with ULV. It's something in the AHQuickAction library that must be fixed. I'm sure that Corwin42 will find a solution for that since two of three quickactions menus are displayed at the right place. It seems it's just a location problem in the Show method.
 

Informatix

Expert
Licensed User
Longtime User
New version 2.2

I just sent an email with a link to the new version. It fixes three issues, including the conflict with AHViewPager. If you use ULV inside an AHViewPager, the new function must be called this way, after Initialize:
myULV.AsScrollView.DisableTouchEventInterception

What's the problem? Both views try to detect a horizontal swipe gesture. Sometimes the first one to detect it is AHViewPager, sometimes it is ScrollView2D. When ScrollView2D is first, it says to AHViewPager "Hey, it's for me. It's my preciooooouuuusssss." The AHViewPager should answer: "No, it's miiiiiiine !" (without this detection, the AHVP doesn't behave properly) but because it is a bit too permissive, it abandons all touch events to SV2D.
 
Last edited:

Informatix

Expert
Licensed User
Longtime User
When you click on a item view and you want to know the ID of the item, you can either store the item ID in the view Tag (in the Filler) or use the following code:
B4X:
Sub MyImgVw_Click
   Dim r As Reflector
   r.Target = Sender
   Dim p As Panel = r.RunMethod("getParent")
   Dim ID As Int = p.Tag

End Sub
 

aaronk

Well-Known Member
Licensed User
Longtime User
Hello,

I just sent you 25euros.. can you send this UltimateListView lib to me?
 

aaronk

Well-Known Member
Licensed User
Longtime User
I receive automatically the Paypal notification for a purchase so it's not useful to post here or in my mailbox. Thanks

Thanks for sending it so quickly.
 

Informatix

Expert
Licensed User
Longtime User
Currently, LoadImageAsync cannot load directly an image from File.DirAssets (this folder is protected and cannot be accessed like other folders), but there is a simple solution to load your image with LoadImageAsync: use the custom loader feature. Define a custom loader with SetExecuteCallbacks and add it to your main code. Example:
B4X:
Sub Bmp_LoadDirAssets(Location As String, ID As String, ImageViewWidth As Int, ImageViewHeight As Int) As Object
   Return LoadBitmapSample(File.DirAssets, Location, ImageViewWidth, ImageViewHeight)
End Sub
Then load your image in the Filler with LoadImageAsync. The location parameter must begin with "custom:". Example:
B4X:
ULV.LoadImageAsync(ivState, "custom:ready.png", "ready")
 

padvou

Active Member
Licensed User
Longtime User
I found the description of your work impressive!
So i gladly added myself to the donors.
I 'm sure I 'll be even more impressed when I start using ULV and the relevant libraries and classes.
Merci bien!
 

Sinan Tuzcu

Well-Known Member
Licensed User
Longtime User
Hello Informatix,

how much is this library?
can i change the graphics?
and also change the line spacing?

Can i the ballon grafik for short Word make smaller

gruß
sinan
 
Last edited:

Informatix

Expert
Licensed User
Longtime User
Hello Informatix,

how much is this library?
can i change the graphics?
and also change the line spacing?

Can i the ballon grafik for short Word make smaller

The fixed donation amount is 25 euros. The donation can be done by clicking on the donate button under my signature.

Everything is customizable in UltimateListView. It is its core feature: you can display whatever you want in each item. You can have different heights, different layouts, and change all this in real-time.
If you know how to create a layout with the designer then you are ready to create your items. The layout designs can be loaded with LoadLayout as usual (an item = a panel).

UltimateListView is just a bit more complex than a B4A ListView. If you're comfortable with CustomListView or CheckList for example, you'll be comfortable with UltimateListView.

As a last note, I have to warn every possible customer about an important thing: by purchasing the UltimateListView, you get a support by email and I try to do my best to help you and to answer quickly, but that's not a development service. So every request starting by "can you write for me a sample doing this and this" or "can you convert the lists in my app" gets always a negative answer. But don't worry: beginners will be taken by the hand until they get the expected result.
 
Last edited:

padvou

Active Member
Licensed User
Longtime User
Thanks, and don't hesitate to write here what you think of it after your first tries.

Well... after my first tries and a great deal of outstanding support by informatix, I managed to integrate ULV in one of my production release projects, replacing deprecated solutions I've been using. I'm really impressed and I 'm just using 1% of ULV's potential.
In other words, Great Job!
Get it now!:icon_clap::icon_clap::icon_clap::icon_clap:
 

Informatix

Expert
Licensed User
Longtime User
Hack & spam

An indian hacker (123.201.235.17) has accessed to one of my email boxes (despite a strong password) and grabbed all my email contacts. That means that all my donators are going to receive spams soon (the first wave has already been sent). I want to reassure everyone: I do not store sensitive information in this email box and Paypal does not provide me with sensitive informations about you.
Don't click on the link in this spam (coming from a spanish/south-american name). That probably leads nowhere, it is just there to check if the address is valid and return this information to the hacker.
 
Top