i can't see what could be wrong, except if the notifyDataSetChanged is overridden in your adapter, then somewhere in your adapter you need to call super.notifyDataSetChanged. If that's not true that would be really useful to step into the frameworks code to undestand what's wrong. You'll need a linux machine/box or mac, get the android open source code setup the building environment, compile the sdk, run the compiled emulator and debug on it. For the debugging environment, use Eclipse and ADT, create a plain Java project, link the frameworks/base/core/java directory after you get the open source code (contains the listview source code). (You'll be installing your apk into the compiled emulator ). Then, link this project to your application's project and debug your application. Then press F5 to step into the list :-)
http://android.git.kernel.org/ -> on the top of the page, shows how to get the git repository http://source.android.com/source/download.html ->instructions to setup the environment and compile the sdk http://source.android.com/source/git-repo.html -> git basic instructions. you can use the "sun virtual box" to host linux if you have a windows computer Besides the time spent to download the tools (linux, python, java, etc, virtual box, etc) the open source code and compilation (which you can let it doing), it should take less than 2 hours of work to do all of it. I hope you can find what's going on as quick as possible. Then tell us what happened (I'm curious) thanks - Fernando On Feb 23, 6:20 pm, Dan <[email protected]> wrote: > I have been working on a similar issue to this. The application is > uses a ListActivity from a Library Project. This Library Project can > also be configured to be its own application (refactoring is in > progress). The ListActivity works well when its project is used as an > application. However the ListView is always empty when it is used from > a library project. The only difference is the data to be displayed. > I have tried different Adapters, with Maps and Cursors and using > setAdapter(), none of these have worked. > > I am working on API level 7. My attempts at a test application has not > resulted in a replication of this bug. I am banging my head against > the wall here. It would help to be able to debug into the framework to > see what I am doing wrong. > > -Dan > > On Jan 25, 10:33 pm, Brill Pappin <[email protected]> wrote: > > > > > > > > > I should mention this is on a Nexus One with aOS 2.2.2 in case that > > matters. > > > Yes, I looked all over that code and even down into AsbListView. > > It actually registers an internal instance member with the adapter, > > and the notify call does seem to make it to the observer as far as I > > can see, but there doesn't seem to be any code that connected the > > observer and the ListView. > > > I was digging down that far in the first place because I was sure > > (three times over, I rewrote it from scratch three times using > > different examples and tutorials besides my first attempt from memory) > > that I had correctly implemented the Adapter and set it on the > > ListView. The list view simply never called the adapter after the > > notify method was called. I know that because I used the basic print- > > to-log when called technique of tracing the calls. The Adapter would > > get properly called when first set on the ListView but after that no > > amount of data change and notify calls would cause it to re-read the > > adapter, which is what I expect it to do if I notify it that my data > > has changed. > > > I the end I simply created a new adapter and reset it on the ListView, > > which seems to be working, however that's broken IMO. > > > I think the next step should be that I write up a quick demo app that > > attempts replicate the problem. If it doesn't do anything except > > demonstrate what I'm seeing, then it should allow others to test as > > well. > > I'll see if I can make time tomorrow for that. > > > BTW - That link seems to not be visible to me :) must be on your > > internal network. > > > - Brill Pappin > > > On Jan 26, 12:35 am, Dianne Hackborn <[email protected]> wrote: > > > > AsbListView and ListView call registerDataSetObserver() on the adapter. > > > BaseAdapter.notifyDataSetChanged() does the notification to whoever is > > > registered with it. > > > > Here is working code, the Running Services UI in settings, that > > > implements a > > > BaseAdapter and uses notifyDataSetChanged() to tell the list view when its > > > contents change: > > > >http://android.git.kernel.org/?p=platform/packages/apps/Settings.git;... > > > > On Tue, Jan 25, 2011 at 8:37 PM, Brill Pappin <[email protected]> wrote: > > > > I just searched the forums, and apparently this is a common problem. > > > > > ListView with a custom adapter based on BaseAdapter. > > > > Its backed by a List object. > > > > > The problem is that updating the data and calling > > > > notifyDataSetChanged(); > > > > does nothing. > > > > I have modified the adapter so that ever method that is called in it > > > > prints > > > > itself to the console. > > > > > my adapter has a method that does the update of the contents and > > > > attempts > > > > to notify: > > > > > public void updateData(List<Event> data) { > > > > > this.data.clear(); > > > > > this.data.addAll(data); > > > > > notifyDataSetChanged(); > > > > > } > > > > > The problem is that after notifyDataSetChanged() is called, the list > > > > never > > > > calls any other methods, not even getCount(). > > > > > My data has changed, and i've notified ListView that it has, yet it > > > > still > > > > refuses to update. > > > > > After some investigation in the OS source, I don't see where the > > > > observer > > > > in the list actually tells the list to update. > > > > > It seems the only way to get the list to update its elements is to > > > > re-set > > > > the adapter on it with the new element set. > > > > > Now I've seen many threads in the group saying that they user was doing > > > > something wrong... but I don't see how the notify is going to update the > > > > list period (change or no change). > > > > > So, I think i'm dealing with a bug here. > > > > > Can someone actually find the code that does the update in the ListVIew > > > > when adapters notifyDataSetChanged() is called? > > > > > - Brill Pappin > > > > > -- > > > > 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]<android-developers%2Bunsubs > > > > [email protected]> > > > > For more options, visit this group at > > > >http://groups.google.com/group/android-developers?hl=en > > > > -- > > > Dianne Hackborn > > > Android framework engineer > > > [email protected] > > > > Note: please don't send private questions to me, as I don't have time to > > > provide private support, and so won't reply to such e-mails. All such > > > questions should be posted on public forums, where I and others can see > > > and > > > answer them. -- 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

