[android-developers] Re: What is wrong with Android Adapters?

2012-02-15 Thread alh
On Feb 15, 8:24 pm, Kostya Vasilyev  wrote:
> I took a break for over 10 minutes, leaving logcat running, and...
> sorry, it just doesn't.

Very interesting :)
Thanks for trying it

Cheers,
Olof

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Re: What is wrong with Android Adapters?

2012-02-15 Thread alh
Views are recycled, though I do not cache findViewById-calls at the
moment (as with the ViewHolder pattern)
I don't think that should affect how many calls I get to "getView"...
thanks for the tip though, it should lessen the impact a bit.
But android still seems a bit broken in this detail...

There are no extra calls to notifyDatasetChanged.

Cheers,
Olof

On Feb 14, 10:10 am, jamesc  wrote:
> Hello
>
> Are you using the ViewHolder pattern to recycle Views?
>
> On Feb 13, 9:48 am, Olof Hedman  wrote:
>
>
>
>
>
>
>
> > I have implemented a couple of differentadaptersin my application.
>
> > No matter which base class I use, I get very weird behavior in how the
> > list calls it to create and bind its views.
>
> > I've tested this on 2.3.3, 2.3.6 and Kindle.
>
> > This log is from an implementation of BaseAdapter, I put a debug-print
> > in "getView".
> > If convertView is null I inflate the view and print "created view".
> > For every call to getView I print "binding View" when I set its
> > values.
> > The code on the end is an id string for the data I bind to the views.
>
> > Everything display just as it should, but I get lots of unneccessary
> > binds!
>
> > This is what I get when I set the adapter to the listview:
>
> > D/SLPA    ( 4097): created View -android.widget.LinearLayout@405bf190
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 0 - to: A5D7W5U9.02
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 1 - to: ASQK89Q8.58
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 2 - to: ASQK89Q8.37
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 3 - to: AEURWHRA.02
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 4 - to: ASQK89Q8.44
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 5 - to: ASQK89Q8.51
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 6 - to: ASQK89Q8.10
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 7 - to: AWQHVP6A.11
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 0 - to: A5D7W5U9.02
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 1 - to: ASQK89Q8.58
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 2 - to: ASQK89Q8.37
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 3 - to: AEURWHRA.02
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 4 - to: ASQK89Q8.44
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 5 - to: ASQK89Q8.51
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 6 - to: ASQK89Q8.10
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 7 - to: AWQHVP6A.11
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405bf190
> > position: 0 - to: A5D7W5U9.02
> > D/SLPA    ( 4097): created View -android.widget.LinearLayout@405ab368
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405ab368
> > position: 1 - to: ASQK89Q8.58
> > D/SLPA    ( 4097): created View -android.widget.LinearLayout@405a85f8
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405a85f8
> > position: 2 - to: ASQK89Q8.37
> > D/SLPA    ( 4097): created View -android.widget.LinearLayout@40548088
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@40548088
> > position: 3 - to: AEURWHRA.02
> > D/SLPA    ( 4097): created View -android.widget.LinearLayout@405743e0
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405743e0
> > position: 4 - to: ASQK89Q8.44
> > D/SLPA    ( 4097): created View -android.widget.LinearLayout@405877c0
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@405877c0
> > position: 5 - to: ASQK89Q8.51
>
> > Its not weird that users complain of sluggish UI if these things are
> > going on!
>
> > When the device goes into sleep, I get this:
>
> > D/SLPA    ( 4097): created View -android.widget.LinearLayout@40555a00
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@40555a00
> > position: 0 - to: A5D7W5U9.02
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@40555a00
> > position: 1 - to: ASQK89Q8.58
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@40555a00
> > position: 2 - to: ASQK89Q8.37
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@40555a00
> > position: 3 - to: AEURWHRA.02
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@40555a00
> > position: 4 - to: ASQK89Q8.44
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@40555a00
> > position: 5 - to: ASQK89Q8.51
> > D/SLPA    ( 4097): binding View -android.widget.LinearLayout@40555a0

[android-developers] Re: What is wrong with Android Adapters?

2012-02-15 Thread alh
Hi,

Thank you for answering.
I wanted to keep the post brief until I found someone interested.

I've got code for another adapter implementation on stackoverflow,
which show the exact same pattern in the calls to getView.
Though this is a CursorTreeAdapter, so it calls "newView" and
"bindView" for me in its implementation of "getView"
http://stackoverflow.com/questions/9250781/cursortreeadapter-binding-views-excessivly-very-weird-behaviour

Any adapter I implement have the same pattern in how getView is
called.
They all look like they work perfectly, until you look closer on how
the methods are called.

Specially the 3x rebinding of all views when I enter powerdown is very
curious.
(There is nothing done in onPause that should affect the list)

Here is a third adapter that also show the exact same pattern, and is
the most minmal I have:
http://pastebin.com/hutfJPcN

It implements ListAdapter, because at that point I had overlooked
BaseListAdapter, but it shouldn't matter.

Cheer,
Olof

On Feb 15, 12:43 am, Doug  wrote:
> On Feb 13, 1:48 am, Olof Hedman  wrote:
>
> > Is there anyone who can shed some light on this, is it just something
> > I have to live with, or have I made some stupid mistake?
> > I have a hard time imagining anything I could have done wrong though,
> > since the code is really minimal.
>
> Why aren't you showing your code, since it is so minimal?  Your log
> isn't helping anyone understand what you actually did.  BTW, "minimal"
> doesn't equate to "correct".
>
> If anything at all is invalidating views in your list, it may be
> getting rebuilt.  If your adapter is getting refreshed somehow, it may
> be getting rebuilt.
>
> You could also try starting with a sample from ApiDemos and building
> from there.
>
> Doug

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en