Hello, I've got a Listview in my activity with a cursor adapter and a view to render the results.
When i return a rather large data set from my query (like say, 15,000 rows), the Listview.setadapter() call blocks on me and occasionally gives me the dreaded ANR dialog. I've tried various ways to background the operation. Fetch the cursor in a background thread, but that is a rather short operation since it just returns a handle to the underlying dataset. Obviously I can't background the loading of the adapter in the thread because the setAdapter needs to be on the UI thread (i tried that and got a nice exception and crash). When setadapter is called, the app locks up while data is being rendered in bindView() and newView(). Users have complained that it looks like the app is frozen (which effectively it is), so they munge around the menus and such while the operation is happening, causing more havoc. My current workaround involved doing a ViewSwitcher to put a little progress widget to switch out while the listview is being rendered. However, since it's on the UI thread, most if not all UI operations get slammed. Progress Dialogs don't show, the progress widget doesn't animate, animation transitions cache weirdly. The other workaround is to default to use smaller datasets which is the more "duh" solution. But the need will arise eventually to do huge dataset queries and/or render more complex views within a ListView...which I think will cause similar SetAdapter() blockages. My question is this. The API examples have the Inefficient list activity examples for binding "slow" data on scroll events. Is there a similar type of lazy loading/fetching of data for a corresponding cursor adapter? I want to basically have a listview bound with a Cursor adapter ONLY render the items in the visible view. It seems like the cursorView sort of does it already, but I was wondering if there was a way to tune the amount of records it prefetches on intial rendering after setadapter (). It seems to do way too much and it blocks the UI. Many thanks. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

