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:

schimanski

Well-Known Member
Licensed User
Longtime User
Hallo! Much thanks for this lib.

I have one question about the chat-example: I have experiment with the chat-example, but i can't raise a click-event. Itemclick doesn't works with this chat...

Thanks for help...
 

Richard Peck

Member
Licensed User
Longtime User
I'm new to UltraListview and I have a basic question. I took your first tutorial and changed the color of the label to red and the label's height to the height of the ULV panel.
B4X:
'
Sub Item_ContentFiller(ItemID As Long, LayoutName As String, LayoutPanel As Panel, Position As Int)
    'Sets the text of the label
    Dim lbl As Label = LayoutPanel.GetView(0) 'First (and only) view in the panel
    lbl.Text = Fruits.Get(Position)
    lbl.Color = Colors.Red
    lbl.Height = ItemHeight
End Sub
'

What I observed was that there is a 5 to 10dip area around the label which isn't used. Is there anyway to remove it. I tried setting the padding to zero but it didn't do anything.
Thanks for your help
 

Informatix

Expert
Licensed User
Longtime User
I'm new to UltraListview and I have a basic question. I took your first tutorial and changed the color of the label to red and the label's height to the height of the ULV panel.
B4X:
'
Sub Item_ContentFiller(ItemID As Long, LayoutName As String, LayoutPanel As Panel, Position As Int)
    'Sets the text of the label
    Dim lbl As Label = LayoutPanel.GetView(0) 'First (and only) view in the panel
    lbl.Text = Fruits.Get(Position)
    lbl.Color = Colors.Red
    lbl.Height = ItemHeight
End Sub
'

What I observed was that there is a 5 to 10dip area around the label which isn't used. Is there anyway to remove it. I tried setting the padding to zero but it didn't do anything.
Thanks for your help
I prefer to provide support by email. Anyway, by looking at the creator sub (or the layout in the designer depending on the file you opened) you will see that I place the label 5dip or 10dip away from the edge. Example from the tutorial #3:
CellPanel.AddView(lbl, 5dip, 5dip, CellPanel.Width - 10dip, CellPanel.Height - 10dip)
 

Richard Peck

Member
Licensed User
Longtime User
I prefer to provide support by email. Anyway, by looking at the creator sub (or the layout in the designer depending on the file you opened) you will see that I place the label 5dip or 10dip away from the edge. Example from the tutorial #3:
CellPanel.AddView(lbl, 5dip, 5dip, CellPanel.Width - 10dip, CellPanel.Height - 10dip)
Thanks
 

javlik

Member
Licensed User
Longtime User
Hi, I have one question.
Is there a way to change a layout created in designer and already assigned to ULV? Or, do i need to remove the old layout first and then re-assign the changed one? My layout contains two labels and I would like to somehow allow users to freely modify the size of the text displayed in one of the label. Is it possible? If so, how?
 

Informatix

Expert
Licensed User
Longtime User
Hi, I have one question.
Is there a way to change a layout created in designer and already assigned to ULV? Or, do i need to remove the old layout first and then re-assign the changed one? My layout contains two labels and I would like to somehow allow users to freely modify the size of the text displayed in one of the label. Is it possible? If so, how?
I prefer to provide support by email.
There's an Editor example provided with the library. It transforms the label in an edittext when you want to change it.
To replace a layout, you have to use one the two functions: ReplaceLayout or ReplaceItemLayoutAt. These functions are described in the Layout Store chapter of the documentation.
 

javlik

Member
Licensed User
Longtime User
Thank you.
Two more questions:
What is the smoothest way to insert callback functions like "Sub Item_Click(...)" and stuff? I haven't found this in the attached docs.
I am using the version 3.91 of the ULV. Now, how can I get the newest version (4.0) from you. Do I have to pay again?
 

Informatix

Expert
Licensed User
Longtime User
Two more questions:
What is the smoothest way to insert callback functions like "Sub Item_Click(...)" and stuff? I haven't found this in the attached docs.

I prefer to provide support by email.

I am using the version 3.91 of the ULV. Now, how can I get the newest version (4.0) from you. Do I have to pay again?

In december, you received the invitation to download the new version in your mailbox. Check your spamfolder if you don't find the message.
 

aklisiewicz

Active Member
Licensed User
Longtime User
My intent is not to hide something; it's just more convenient for me and my users. By email, I can exchange files with them and the exchange can last as long as needed. Moreover, since some of the users use my product in a commercial project, they can talk freely of their app with me.


Yes, the ULV will speed that up without any hesitation. The number of items doesn't really matter. BUT since data are loaded in real time, you would probably have to prepare your data before displaying the list (not sure, it depends on the complexity of your joined tables and the speed to retrieve each record). That may take a few seconds (a lot less than 75, and you can do it in the background if you wish; you can also save the result in a cache to reuse it later). I'll explain that to you after your first steps with the product.

No brother, you are wrong on that. I'm thinking about buying your Library, but I would like to see support for it on the forum. I like to study others problems and see how easy they have them resolved. I would like to see what are posibilities, others ideas etc. You locking everything up. I understand your concern for security and making profit, but everyone developing software must take some risk and count on the fact that most developers are honest and WANT TO PAY for your hard work. Those who steal are minority and it always has to be taken into consideration when calculation prices.

Screen shoots are not enough. I would like to see some examples, code etc....

The more you trust, the more success you will get. THIS IS LAW OF ATTRACTION. Your doubts in human honesty will bring more disappointment. Choice is yours.

Art
 

Informatix

Expert
Licensed User
Longtime User
I would like to see support for it on the forum. I like to study others problems and see how easy they have them resolved.

I'd like to have a forum dedicated to UltimateListView but I don't have enough time to build a web site and I cannot say that's a demand from my donors. As more than 60% of exchanges with my donors include an exchange of code (and it is their code, not mine, so it requires some privacy), a forum is probably not the ideal place for support and, to speak of this forum, I don't want to have hundreds of page in this thread. I have a lot of users, and so a lot of questions and answers. Mixing all that in a forum, without any order, would be a nightmare.
Note that I never discouraged anyone to share his/her experience on this forum or give his/her opinion on my product. I never asked to Erel to remove anything (someone posted a full example last month and I really don't care).

I would like to see what are posibilities, others ideas etc.

An example of code won't prove you anything. Working demos, as the ones I provide in the first post, will prove you better my claims about the product.

You locking everything up.

It's an opinion not based on facts.

making profit

Wow. I'd like to make a lot of profit with ULV, but despite its a real success, I'm far from earning what I could earn with a low paid job.
This money is a way to encourage me to continue to produce free libraries for everyone and to consent to spend some time for support (I try to have a family life beside). Between 1990 and 2010, I contributed to so many collaborative projects that nobody can say I didn't give my share of free time and code (you will see that I'm in the hall of fame of major contributors to the Jedi library, the famous library for Borland users, and I never earned a dime from that).

Those who steal are minority and it always has to be taken into consideration when calculation prices.

The only thing that I ask about this is to use the obfuscation option when you compile your final project. But if you don't do it, I won't sue you. ;)

Screen shoots are not enough. I would like to see some examples, code etc....

You have the complete list of functions and many APKs to test at the bottom of the first post.

The more you trust, the more success you will get. THIS IS LAW OF ATTRACTION. Your doubts in human honesty will bring more disappointment. Choice is yours.

And my choice will be clear indeed: I will change only one thing: the minimum donation amount for you is raised to 50 euros. Sorry, but I have less and less time to cope with rantings and I'm not in need of new users.
 

Erel

B4X founder
Staff member
Licensed User
Longtime User
First I would like to say we (the community) are very very fortunate to have Informatix as one of the key members here.

Informatix like any other user is free to choose his business model. You, as a potential client, are free to choose whether to purchase it or not. I know that your intentions are good however as he already answered Mahares question you should not raise it again.
 

javlik

Member
Licensed User
Longtime User
Just a little writeup: I am a new user of the ULV and here is my experience in short:
The library is really unique. By using it, you can get awesome results with a minimum effort.
The support provided by Informatix is IMHO professional (he is aware of his consumers' expectations) and, I would say, agile (he often replies in a few hours).
Sorry for my english. I just felt to be a bit due to Informatix for his patience with me as his consumer :)
 

shashkiranr

Active Member
Licensed User
Longtime User
I want to share my experience.

One of the best libraries on the forum. Not only because it is programmable to your needs but also because of the support you get from Informatrix when you get stuck somewhere.

You get a list of methods,sample templates and example codes that give enough information as to how to use this library in your application.

Also for me the sample examples have shown me how i can improve my coding..!!

Always support is provided by email and that gives a sense of individual attention.

The only way the potential of this library can be know is if you bring out enough from it and it all depends on your creative power...!!

With every update to this library something new is added which is again based on the feedback from us.

If anyone of you are thinking of buying this library then go for it..!! you wont regret it...!!

Thank you Fred. :)

Regards,
SK
 

mindcom

Member
Licensed User
Longtime User
Dear Informatix,
I have just made the donation you ask for that lib.
I look forward to use it.
let me know.
 

schimanski

Well-Known Member
Licensed User
Longtime User
Hello Informatix!

Is there a way to save the Image directly after loadimageasync?
I have tried
B4X:
 ULV_PostLoad(Bmp As Bitmap, ImgID As String, ImageViewWidth As Int, ImageViewHeight As Int) as bitmap
,

but no result.

Thanks for help!
 
Top