Oct 26, 2012 Replies: 1,067 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: It can mix different layouts (and they can be changed dynamically). You can use it as an expandable ListView: 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): It can scroll in both directions thanks to its swipe detector: The swipe detector can also be used to implement a swipe-to-dismiss or a swipe-to-reveal: You can easily add editors to your table to change its content: You can animate the items when they are added, removed, replaced or when the list is scrolled (with your own custom animation): It can stack items from the bottom: It supports drag & drop operations (internal & external): You can synchronize lists with different item heights: 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: May 4, 2021 Click to expand...
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: It can mix different layouts (and they can be changed dynamically). You can use it as an expandable ListView: 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): It can scroll in both directions thanks to its swipe detector: The swipe detector can also be used to implement a swipe-to-dismiss or a swipe-to-reveal: You can easily add editors to your table to change its content: You can animate the items when they are added, removed, replaced or when the list is scrolled (with your own custom animation): It can stack items from the bottom: It supports drag & drop operations (internal & external): You can synchronize lists with different item heights: 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:
thedesolatesoul Expert Licensed User Longtime User Mar 28, 2013 #81 Informatix said: 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. Click to expand... Went straight to my spam folder.
Informatix said: 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. Click to expand... Went straight to my spam folder.
A AndroidUserCCS Member Licensed User Longtime User Mar 30, 2013 #82 I donate today! I am thinking in use this library for a database application. I want to use it using a WCF Service.
I donate today! I am thinking in use this library for a database application. I want to use it using a WCF Service.
stefanoa Active Member Licensed User Longtime User Apr 1, 2013 #83 donation I donate now! please send me a mail. thanks!
A AndroidUserCCS Member Licensed User Longtime User Apr 2, 2013 #85 Informatix said: 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. Click to expand... I check my two emails and dont receive spam, maybe soon.:sign0148:
Informatix said: 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. Click to expand... I check my two emails and dont receive spam, maybe soon.:sign0148:
R rildomoraes Member Licensed User Longtime User Apr 5, 2013 #86 New release accepts drag 'n drop.. Thanks! :sign0060:
U uncle_giavelli New Member Licensed User Longtime User Apr 14, 2013 #87 Drop the hotmail account. Over the past few months I've seen a lot of this type of problem from mostly yahoo but hotmail also. I admin our company's email. Google seems to show up less... love them or hate them. I just donated. Thanks for the great solution.
Drop the hotmail account. Over the past few months I've seen a lot of this type of problem from mostly yahoo but hotmail also. I admin our company's email. Google seems to show up less... love them or hate them. I just donated. Thanks for the great solution.
Informatix Expert Licensed User Longtime User Apr 14, 2013 #88 uncle_giavelli said: Drop the hotmail account. Over the past few months I've seen a lot of this type of problem from mostly yahoo but hotmail also. I admin our company's email. Google seems to show up less... love them or hate them. Click to expand... Yes I strongly advise against using Hotmail, but unfortunately I have a long past with them and it's too much work to migrate everything to Gmail. Microsoft didn't detect the intrusions on my account, so I had to prove them with the connection log (not easy to obtain). That means two things: the hacker entered without the password (backdoor?), or he got the password on a Microsoft server. He didn't use the secrete question and didn't change the password. Without my vigilance, he could continue without being worried. I feel very unsafe now if any hacker can read my emails as an open book. A legal procedure against Microsoft is not excluded. uncle_giavelli said: I just donated. Thanks for the great solution. Click to expand... Thanks
uncle_giavelli said: Drop the hotmail account. Over the past few months I've seen a lot of this type of problem from mostly yahoo but hotmail also. I admin our company's email. Google seems to show up less... love them or hate them. Click to expand... Yes I strongly advise against using Hotmail, but unfortunately I have a long past with them and it's too much work to migrate everything to Gmail. Microsoft didn't detect the intrusions on my account, so I had to prove them with the connection log (not easy to obtain). That means two things: the hacker entered without the password (backdoor?), or he got the password on a Microsoft server. He didn't use the secrete question and didn't change the password. Without my vigilance, he could continue without being worried. I feel very unsafe now if any hacker can read my emails as an open book. A legal procedure against Microsoft is not excluded. uncle_giavelli said: I just donated. Thanks for the great solution. Click to expand... Thanks
Informatix Expert Licensed User Longtime User Apr 19, 2013 #89 Pull to refresh Some users have asked me to add the "Pull to refresh" feature to UltimateListView. My answer was and is still no. Some of my reasons are explained here (in the Bad column): Android Patterns But the main reason is that I don't want to overload my code with features that can be added easily by the user. A "P-to-R" is nothing more than an item at the top of the list that refreshes the list when it becomes fully visible. For the little story: it took me weeks before I realized that there's a Pull to Refresh implemented in Pulse News, which I was using almost every day. This pattern is not intuitive at all. I think that a Refresh button should be added in all cases.
Pull to refresh Some users have asked me to add the "Pull to refresh" feature to UltimateListView. My answer was and is still no. Some of my reasons are explained here (in the Bad column): Android Patterns But the main reason is that I don't want to overload my code with features that can be added easily by the user. A "P-to-R" is nothing more than an item at the top of the list that refreshes the list when it becomes fully visible. For the little story: it took me weeks before I realized that there's a Pull to Refresh implemented in Pulse News, which I was using almost every day. This pattern is not intuitive at all. I think that a Refresh button should be added in all cases.
G gadgetmonster Active Member Licensed User Longtime User May 10, 2013 #90 Trouble with images in list Hi, I am using your ultimatelistview but have a problem showing images. I retrieve records from a database (around 40) some of which have images. If I delete the apps cache using android application manager and then run the app, all looks fine. Correct images on correct rows. If I then add a new row with a picture and return back to the list, the pictures get jumbled up in the list. Some show correctly, some show the wrong image. If I now clear the app's cache again in settings, and re run the app then the list shows the correct images again. FYI I am using LoadImageAsync in the content filler. Please help.
Trouble with images in list Hi, I am using your ultimatelistview but have a problem showing images. I retrieve records from a database (around 40) some of which have images. If I delete the apps cache using android application manager and then run the app, all looks fine. Correct images on correct rows. If I then add a new row with a picture and return back to the list, the pictures get jumbled up in the list. Some show correctly, some show the wrong image. If I now clear the app's cache again in settings, and re run the app then the list shows the correct images again. FYI I am using LoadImageAsync in the content filler. Please help.
Informatix Expert Licensed User Longtime User May 10, 2013 #91 paulchatwin said: Hi, I am using your ultimatelistview but have a problem showing images. I retrieve records from a database (around 40) some of which have images. If I delete the apps cache using android application manager and then run the app, all looks fine. Correct images on correct rows. If I then add a new row with a picture and return back to the list, the pictures get jumbled up in the list. Some show correctly, some show the wrong image. If I now clear the app's cache again in settings, and re run the app then the list shows the correct images again. FYI I am using LoadImageAsync in the content filler. Please help. Click to expand... That means you did not set correctly the ID for your images (this ID is their unique signature). Send me your code by email and I'll show you how to fix this issue.
paulchatwin said: Hi, I am using your ultimatelistview but have a problem showing images. I retrieve records from a database (around 40) some of which have images. If I delete the apps cache using android application manager and then run the app, all looks fine. Correct images on correct rows. If I then add a new row with a picture and return back to the list, the pictures get jumbled up in the list. Some show correctly, some show the wrong image. If I now clear the app's cache again in settings, and re run the app then the list shows the correct images again. FYI I am using LoadImageAsync in the content filler. Please help. Click to expand... That means you did not set correctly the ID for your images (this ID is their unique signature). Send me your code by email and I'll show you how to fix this issue.
G gadgetmonster Active Member Licensed User Longtime User May 10, 2013 #92 Thank you. Basically I am using the ItemID from the content filler as follows: Code: Sub Item_ContentFiller(ItemID As Long, LayoutName As String, LayoutPanel As Panel, Position As Int) ULV.LoadImageAsync(ivPhoto, File.DirRootExternal & "/MyApp/images/" & entry.UUID & ".jpg", ItemID) End Sub
Thank you. Basically I am using the ItemID from the content filler as follows: Code: Sub Item_ContentFiller(ItemID As Long, LayoutName As String, LayoutPanel As Panel, Position As Int) ULV.LoadImageAsync(ivPhoto, File.DirRootExternal & "/MyApp/images/" & entry.UUID & ".jpg", ItemID) End Sub
G gadgetmonster Active Member Licensed User Longtime User May 10, 2013 #93 I have now added a new field to entry called ID which is set to a number within the loop that loads the data. For example: Code: For i = 0 To dbCursor.RowCount - 1 dbCursor.Position = i Dim entry As typEntry entry.ID = i ... entryList.Add(entry) Next Now in my content filler I use: Code: Dim entry As typEntry entry = entryList.Get(ItemID) ULV.LoadImageAsync(ivPhoto, File.DirRootExternal & "/DJournal/images/" & entry.UUID & ".jpg", entry.id) But I still get the same problem.
I have now added a new field to entry called ID which is set to a number within the loop that loads the data. For example: Code: For i = 0 To dbCursor.RowCount - 1 dbCursor.Position = i Dim entry As typEntry entry.ID = i ... entryList.Add(entry) Next Now in my content filler I use: Code: Dim entry As typEntry entry = entryList.Get(ItemID) ULV.LoadImageAsync(ivPhoto, File.DirRootExternal & "/DJournal/images/" & entry.UUID & ".jpg", entry.id) But I still get the same problem.
G gadgetmonster Active Member Licensed User Longtime User May 10, 2013 #94 I think the problem is as follows: 1. I have a list where images match rows fine. 2. I press a button to add a new item which goes off to another page 3. On this page I add a new entery with a new photo which is saved to the database 4. I return to my list page and the images are now out of alignment. When returning to my list page I call ULV.ClearContent before reloading the data and images back in. Could this be the issue?
I think the problem is as follows: 1. I have a list where images match rows fine. 2. I press a button to add a new item which goes off to another page 3. On this page I add a new entery with a new photo which is saved to the database 4. I return to my list page and the images are now out of alignment. When returning to my list page I call ULV.ClearContent before reloading the data and images back in. Could this be the issue?
G gadgetmonster Active Member Licensed User Longtime User May 10, 2013 #95 I have found a work around (not sure if its the best way) but if I add: Code: ULV.CloseCache(True) ULV.ReopenDiskCache Before reloading the data back in - it works a treat.
I have found a work around (not sure if its the best way) but if I add: Code: ULV.CloseCache(True) ULV.ReopenDiskCache Before reloading the data back in - it works a treat.
Informatix Expert Licensed User Longtime User May 10, 2013 #96 paulchatwin said: I have found a work around (not sure if its the best way) but if I add: Code: ULV.CloseCache(True) ULV.ReopenDiskCache Before reloading the data back in - it works a treat. Click to expand... Only by email, please.
paulchatwin said: I have found a work around (not sure if its the best way) but if I add: Code: ULV.CloseCache(True) ULV.ReopenDiskCache Before reloading the data back in - it works a treat. Click to expand... Only by email, please.
jmon Well-Known Member Licensed User Longtime User May 11, 2013 #97 Hi, I saw your answer in the thread I posted about the lv containing 25k items. Your library sounds interesting, and I might try it just for fun, as a hobby I got some questions though: How does the expandable listview works? Is it animated? Would I be able to do that: 1) click on an item in the listview 2) it expands a sublayout containing share buttons or other info 3) all of this animated, pushing down the other listview items and closing any other expanded item Is it possible to insert an item in the list at a specific position? Would that be animated i.e. Pushing down other elements? Sent from my GT-P7500 using Tapatalk HD
Hi, I saw your answer in the thread I posted about the lv containing 25k items. Your library sounds interesting, and I might try it just for fun, as a hobby I got some questions though: How does the expandable listview works? Is it animated? Would I be able to do that: 1) click on an item in the listview 2) it expands a sublayout containing share buttons or other info 3) all of this animated, pushing down the other listview items and closing any other expanded item Is it possible to insert an item in the list at a specific position? Would that be animated i.e. Pushing down other elements? Sent from my GT-P7500 using Tapatalk HD
Informatix Expert Licensed User Longtime User May 11, 2013 #98 jmon said: How does the expandable listview works? Is it animated? Click to expand... You have a function to declare the relationship between items (SetChildren) and two functions to expand or collapse the children items. You can have many nested levels. You may animate your list. I provide an example showing that. But this is a limited feature because some animations can create problems, and I prefer stability. jmon said: Is it possible to insert an item in the list at a specific position? Click to expand... Of course. It's a pretty basic feature for such a view. jmon said: Would that be animated i.e. Pushing down other elements? Click to expand... In my example, you can see a progressive expansion of an expandable item.
jmon said: How does the expandable listview works? Is it animated? Click to expand... You have a function to declare the relationship between items (SetChildren) and two functions to expand or collapse the children items. You can have many nested levels. You may animate your list. I provide an example showing that. But this is a limited feature because some animations can create problems, and I prefer stability. jmon said: Is it possible to insert an item in the list at a specific position? Click to expand... Of course. It's a pretty basic feature for such a view. jmon said: Would that be animated i.e. Pushing down other elements? Click to expand... In my example, you can see a progressive expansion of an expandable item.
MMORETTI964 Member Licensed User Longtime User May 29, 2013 #99 Selecting item Hi, Frederic. I would like to select a row of your list on a single tap, changing color to row permanently to see the items was selected. There is a way in your library to change the selected color (a property, for example) or I need to change it by hand on every list in a program? Thank you in advance. Maurizio
Selecting item Hi, Frederic. I would like to select a row of your list on a single tap, changing color to row permanently to see the items was selected. There is a way in your library to change the selected color (a property, for example) or I need to change it by hand on every list in a program? Thank you in advance. Maurizio
Informatix Expert Licensed User Longtime User May 29, 2013 #100 Hello I provide support only by email.