I guess the cursor position tag would/could present a problem if the
data size were changing, but it's not (in this particular instance)
and the query/requery results are sorted in a specific order per the
_id.

Weird.

On Feb 8, 4:03 pm, Kostya Vasilyev <kmans...@gmail.com> wrote:
> Then perhaps the cursor gets requeried and the position changes.
>
> You can track down requeries with a cursor factory and some logging, but
> perhaps it's easier to set a tag to the item's _id value, as that should not
> change (and you need the _id to delete, anyway).
>
> --
> Kostya Vasilyev --http://kmansoft.wordpress.com
> 09.02.2011 1:54 пользователь "ivan" <istas...@gmail.com> написал:
>
> > "You were saying something about buttons - how are you creating them,
> > and
> > mapping to the right data item? "
>
> > I set a tag to the cursor position in the bindView() function.
>
> > On Feb 8, 3:20 pm, Kostya Vasilyev <kmans...@gmail.com> wrote:
> >> No, waiting on synchronized block or thread.wait blocks the waiting
> thread
> >> and only lets other threads run.
>
> >> But, that synchronization doesn't sound good for a different reason,
> since
> >> you are blocking the UI thread, and that should not happen.
>
> >> One way around it is to make that cached data item available in the query
> >> used to populate the list, and fire off update requests to the worker
> thread
> >> as needed. Once the worker thread updates the cached item, the list
> should
> >> update automatically (since you mentioned that your data is in a content
> >> provider).
>
> >> You were saying something about buttons - how are you creating them, and
> >> mapping to the right data item?
>
> >> --
> >> Kostya Vasilyev --http://kmansoft.wordpress.com
> >> 09.02.2011 1:04 пользователь "ivan" <istas...@gmail.com> написал:
>
> >> > The only manipulation to the view object is via the non-overridden
> >> > ResourseCursorAdapter bindView() function. On occasion this function
> >> > will block for a couple seconds maximum if a drm data cache is
> >> > occurring in another thread, but that thread never touches the view
> >> > object. Maybe waiting on a synchronized block of code (in the UI
> >> > thread) to get values from the multi-threaded cache causes the UI
> >> > thread to wait, releasing cycles to the UI thread, which in turn
> >> > allows the misplaced event to occur?
>
> >> > On Feb 8, 12:32 pm, Kostya Vasilyev <kmans...@gmail.com> wrote:
> >> >> Are you sure that you only touch the ListView and its adapter from the
> >> >> UI thread?
>
> >> >> -- Kostya
>
> >> >> 08.02.2011 22:11, ivan пишет:
>
> >> >> > Thanks for the reply.
>
> >> >> > The button events are -- nine times out of ten -- tied to the
> correct
> >> >> > data, but if you rapidly push a button you can throw an event that
> >> >> > will be tied to the wrong data.  I thought that this didn't make
> sense
> >> >> > since everything should be occurring on the UI thread (right?).  But
> >> >> > it appears that the event can sneak in before the screen is actually
> >> >> > refreshed.
>
> >> >> > On Feb 8, 11:24 am, Kostya Vasilyev<kmans...@gmail.com>  wrote:
> >> >> >> If the button is linked to the wrong item, then you have a bug in
> your
> >> >> >> adapter's getView, where you're not properly associating the button
> >> with
> >> >> >> the item for the case where convertView != null.
>
> >> >> >> As for performance, I find it useful, when refreshing a ListView
> item
> >> in
> >> >> >> response to some event, to go through the visible list items, find
> the
> >> >> >> ones that are affected, and push new values into them right then
> and
> >> >> >> there, rather than calling notifyDataSetChanged / Invalidated.
>
> >> >> >> -- Kostya
>
> >> >> >> 08.02.2011 19:47, ivan пишет:
>
> >> >> >>> Anyone?
> >> >> >>> On Feb 7, 4:33 pm, ivan<istas...@gmail.com>    wrote:
> >> >> >>>> I'm using a ResourceCursorAdapter to display a list of downloads
> >> from
> >> >> >>>> a ContentProvider that track's my application's downloads --
> modeled
> >> >> >>>> after Android's DownloadProvider.
> >> >> >>>> The problem is that when a download is actively running it
> >> frequently
> >> >> >>>> calls bind view--every few seconds--to update a download progress
> >> bar,
> >> >> >>>> with a view object that is NOT currently associated with a given
> >> >> >>>> cursor position.  Thus, bind view is constantly recycling and
> >> binding
> >> >> >>>> view objects to new item/cursor positions.
> >> >> >>>> This is especially a problem if the user attempts to push a
> button
> >> on
> >> >> >>>> one of the items while it's being bound to a different view
> object
> >> and
> >> >> >>>> cursor position, which results in an event being fired for the
> wrong
> >> >> >>>> data.
> >> >> >>>> Does anyone have advice on how to minimize unnecessary view
> >> recycling?
> >> >> >>>> It appears to only occur for the bottom and top list items (of
> the
> >> >> >>>> three on the screen), while the middle item remains tied to a
> single
> >> >> >>>> cursor and view object.
> >> >> >>>> Thanks,
> >> >> >>>> -Ivan
> >> >> >> --
> >> >> >> Kostya Vasilyev -- WiFi Manager + pretty widget --
>
> >>http://kmansoft.wordpress.com
>
> >> >> --
> >> >> Kostya Vasilyev -- WiFi Manager + pretty widget --
>
> >>http://kmansoft.wordpress.com
>
> >> > --
> >> > 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
>
> > --
> > 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

-- 
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

Reply via email to